home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus Special 18
/
AMIGAplus Sonderheft 18 (1999)(ICP)(DE)[!].iso
/
PD
/
Anwendungen
/
AmiTRS80
/
SRC
/
Z80.asm
< prev
next >
Wrap
Assembly Source File
|
1999-01-03
|
207KB
|
14,299 lines
MACHINE 68020
SECTION Z80,CODE
XDEF _JUMPTBL
XDEF _START00
XDEF _RESET00
XDEF _PAUSE00
XREF _SIGMASK
XREF _PROGCOUNT
XREF _CINST
XREF _READY
XREF _TRACE
XREF _CASSPTR
XREF _CHL
XREF _CBC
XREF _CDE
XREF _CIX
XREF _CIY
XREF _CAF
XREF _CSP
XREF _rom
XREF _scrn
XREF _chars
XDEF _screenwrite
DEEBUG EQU 0 ; MAKE 0 TO DISABLE DEBUG CODE
* A0 = amiga address of Z80 $0000
* A1 = ACTUAL ADDRESS THAT IX POINTS TO
* A2 = amiga address of current Z80 PC (not the actual Z80 PC)
* A3 = base address of instruction vector table
* A4 = AMIGA address of SP
* A5 = ACTUAL ADDRESS THAT IY POINTS AT
* A6 = BASE ADDRESS OF LOOKUP TABLES FOR FLAGS,H FLAG,PARITY.
* D1.W = current opcode + following single byte operand
* (ALSO AVAILABLE FOR TEMPORARY USE WITHIN AN EMULATED INSTRUCTION)
* D0.B = current A value
* D2.W = current HL value
* D3.W = current BC value
* top D3.W = CURRENT DE value
* D4 = FLAGS (680X0 FLAGS NOT Z-80)
* D5 = FLAGS H AND N FROM Z-80
* D7.L = TEMPORARY WORK REGISTER
* D6.L = TEMPORARY WORK REGISTER 2
* Z80 flags : 7 6 5 4 3 2 1 0
* S Z - H - P/V N C
* 680x0 flags - - - X S Z V C
_START00: MOVEM.L D0-D7/A0-A6,-(SP)
MOVEA.L (4).W,A6
MOVE.B #$FF,D0
JSR (-$14A,A6)
MOVEQ #0,D1
BSET D0,D1
MOVE.L D1,_SIGMASK ; SAVE IN _SIGMASK IN MAIN PROG
BSR.W RESTRT
MOVEA.L _JUMPTBL,A3
ADDA.L #$20000,A3
MOVEA.L #_rom,A2
MOVEA.L #_rom,A0
MOVEA.L #PARITY,A6
MOVEA.L A0,A4
MOVEA.L A0,A1
MOVEA.L A0,A5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
NMI:
BSR.B RESTRT
MOVEA.L _JUMPTBL,A3
ADDA.L #$20000,A3
MOVEA.L #_rom,A2
MOVEA.L #_rom,A0
MOVEA.L #PARITY,A6
MOVEA.L A0,A4
MOVEA.L A0,A1
MOVEA.L A0,A5
LEA ($66,A2),A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
PAUSE:
MOVEM.L D0-D7/A0-A6,-(SP)
SUBQ.L #2,A2
SUBA.L A0,A2
MOVE.W A2,_PROGCOUNT
BSR.B RESTRT
MOVEA.L (4).W,A6
MOVE.L _SIGMASK,D0
JSR (-$13E,A6)
MOVEM.L (SP)+,D0-D7/A0-A6
MOVEQ #0,D7
MOVE.W _PROGCOUNT,D7
MOVEA.L A0,A2
ADDA.L D7,A2
MOVE.W (A2)+,D1
JMP ([A3,D1.W*4])
DEBUG: MOVEM.L D0-D7/A0-A6,-(SP)
SUBQ.L #2,A2
MOVE.L (A2),_CINST
SUBA.L A0,A2
MOVE.W A2,_PROGCOUNT
MOVE.W D2,_CHL
MOVE.W D3,_CBC
SWAP D3
MOVE.W D3,_CDE
SWAP D3
SUBA.L A0,A1
MOVE.W A1,_CIX
SUBA.L A0,A4
MOVE.W A4,_CSP
SUBA.L A0,A5
MOVE.W A5,_CIY
ANDI.W #$1F,D4
MOVE.B ($200,A6,D4.W),D7
OR.B D5,D7
ROL.W #8,D7
MOVE.B D0,D7
ROL.W #8,D7
MOVE.W D7,_CAF
MOVEQ #1,D7
MOVE.W D7,_READY
MOVE.W _TRACE,D7
BEQ.B .L1
MOVEA.L (4).W,A6
MOVE.L _SIGMASK,D0
JSR (-$13E,A6)
.L1: MOVEM.L (SP)+,D0-D7/A0-A6
JMP ([A3,D1.W*4])
RESTRT:
MOVEA.L (4).W,A6
JSR (-$84,A6)
MOVEA.L #MNTBL,A0
MOVEA.L _JUMPTBL,A1
MOVE.W #$FF,D1
.L1: MOVE.W #$FF,D0
MOVEA.L (A0)+,A5
.L2: MOVE.L A5,(A1)+
DBRA D0,.L2
DBRA D1,.L1
MOVEA.L #CBTABLE,A0
MOVEA.L _JUMPTBL,A1
ADDA.L #$12C00,A1
MOVE.W #$FF,D1
.L4: MOVE.L (A0)+,(A1)+
DBRA D1,.L4
MOVEA.L #DDTABLE,A0
MOVEA.L _JUMPTBL,A1
ADDA.L #$17400,A1
MOVE.W #$FF,D1
.L5: MOVE.L (A0)+,(A1)+
DBRA D1,.L5
MOVEA.L #FDTABLE,A0
MOVEA.L _JUMPTBL,A1
ADDA.L #$1F400,A1
MOVE.W #$FF,D1
.L6: MOVE.L (A0)+,(A1)+
DBRA D1,.L6
MOVEA.L #EDTABLE,A0
MOVEA.L _JUMPTBL,A1
ADDA.L #$1B400,A1
MOVE.W #$FF,D1
.L7: MOVE.L (A0)+,(A1)+
DBRA D1,.L7
MOVEA.L (4).W,A6
JSR (-$8A,A6)
RTS
_RESET00: ; RESETS THE Z-80 TO 0000 AFTER THE CURRENT INSTRUCTION
MOVEM.L A0-A6/D0-D7,-(SP)
MOVE.L 4,A6
JSR -$0084(A6) ; Forbid()
MOVE.L _JUMPTBL,A1
MOVE.W #$00FF,D1
.L1: MOVE.W #$00FF,D0
MOVE.L #NMI,A5
.L2: MOVE.L A5,(A1)+
DBRA D0,.L2
DBRA D1,.L1
MOVE.L 4,A6
JSR -$008A(A6) ; Permit()
MOVEM.L (SP)+,A0-A6/D0-D7
RTS
_PAUSE00: ; PAUSES THE Z80 AFTER THE CURRENT INSTRUCTION (CALLED FROM MAIN PROCESS)
MOVEM.L D0-D7/A0-A6,-(SP)
MOVEA.L (4).W,A6
JSR (-$84,A6)
MOVEA.L _JUMPTBL,A1
MOVE.W #$FF,D1
.L1: MOVE.W #$FF,D0
MOVEA.L #PAUSE,A5
.L2: MOVE.L A5,(A1)+
DBRA D0,.L2
DBRA D1,.L1
MOVEA.L (4).W,A6
JSR (-$8A,A6)
MOVEM.L (SP)+,D0-D7/A0-A6
RTS
_screenwrite:
* ON ENTRY D1.W HOLDS #$XXXX (3C00-3FFF)
* D6.B HOLDS ASCII CHAR 00-FF
MOVEM.L D1/D2/A0/A2,-(SP)
ANDI.W #$3FF,D1
LEA _scrn,A0
MOVEA.L (A0,D1.L*4),A0
MOVEQ #0,D1
MOVE.B D6,D1
EXT.L D1
MOVE.L D1,D2
ASL.L #3,D2
ADD.L D1,D2
LEA _chars,A2
ADDA.L D2,A2
MOVE.W #$40,D2
MOVE.B (A2)+,(A0)
ADD.W D2,A0
MOVE.B (A2)+,(A0)
ADD.W D2,A0
MOVE.B (A2)+,(A0)
ADD.W D2,A0
MOVE.B (A2)+,(A0)
ADD.W D2,A0
MOVE.B (A2)+,(A0)
ADD.W D2,A0
MOVE.B (A2)+,(A0)
ADD.W D2,A0
MOVE.B (A2)+,(A0)
ADD.W D2,A0
MOVE.B (A2)+,(A0)
ADD.W D2,A0
MOVE.B (A2)+,(A0)
MOVEM.L (SP)+,D1/D2/A0/A2
RTS
ILLEGAL:
MOVEM.L (SP)+,D0-D7/A0-A6
RTS
MAIN00: SUBQ.L #1,A2 ; NOP
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN01: ROL.W #8,D1 ; LD BC,XXXX
MOVE.B (A2)+,D1
ROL.W #8,D1
MOVE.W D1,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN02: MOVEQ #0,D1 ; LD (BC),A
MOVE.W D3,D1
CMPI.W #$4000,D1
BCS.B .L1
MOVE.B D0,(A0,D1.L)
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1 CMPI.W #$3BFF,D1
BHI.B .L2
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2 MOVE.B D0,D6
MOVE.B D0,(A0,D1.L)
BSR.W _screenwrite
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN03: ; INC BC
ADDQ.W #1,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN04: ; INC B
MOVE.B D4,D6
ROL.W #8,D3
MOVE.W D4,CCR
ADDQ.B #1,D3
MOVE.W CCR,D4
ANDI.W #$EE,D4
ANDI.W #$11,D6
OR.B D6,D4
MOVE.B D3,D7
ROL.W #8,D3
ANDI.W #$FF,D7
MOVE.B ($220,A6,D7.W),D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN05: ; DEC B
MOVE.W D4,D6
ROL.W #8,D3
MOVE.W D4,CCR
SUBQ.B #1,D3
MOVE.W CCR,D4
ANDI.W #$EE,D4
ANDI.W #$11,D6
OR.B D6,D4
MOVE.B D3,D7
ROL.W #8,D3
ANDI.W #$FF,D7
MOVE.B ($320,A6,D7.W),D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN06: ; LD B,X
ROL.W #8,D3
MOVE.B D1,D3
ROL.W #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN07: ; RLCA
ROL.B #1,D0
SCS D7
ANDI.W #$EE,D4
ANDI.W #$11,D7
OR.B D7,D4
MOVEQ #0,D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN08: ; EX AF,AF'
MOVE.W D0,REGA
MOVE.W D4,FLAGS
MOVE.W D5,XFLAGS
MOVE.W AREGA,D0
MOVE.W AFLAGS,D4
MOVE.W XAFLAGS,D5
MOVE.W REGA,AREGA
MOVE.W FLAGS,AFLAGS
MOVE.W XFLAGS,XAFLAGS
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN09: ; ADD HL,BC
ANDI.B #$EE,D4 ; MASK X,C
ADD.W D3,D2
SCS.B D7
ANDI.B #$11,D7
OR.B D7,D4
MOVEQ #0,D5 ; SET H=0 N=0
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN0A: ; LD A,(BC)
MOVEQ #0,D1
MOVE.W D3,D1
MOVE.B (A0,D1.L),D0
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN0B: ; DEC BC
SUBQ.W #1,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN0C: ; INC C
MOVE.W D4,D6
MOVE.W D4,CCR
ADDQ.B #1,D3
MOVE.W CCR,D4
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D6
OR.B D6,D4 ; SET X,C IF PREVIUOSLY SET
MOVE.B D3,D7
ANDI.W #$00FF,D7 ; EXT D7 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D7.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN0D: ; DEC C
MOVE.W D4,D6
MOVE.W D4,CCR
SUBQ.B #1,D3
MOVE.W CCR,D4
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D6
OR.B D6,D4 ; SET X,C IF PREVIUOSLY SET
MOVE.B D3,D7
ANDI.W #$00FF,D7 ; EXT D7 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D7.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN0E: ; LD C,X
MOVE.B D1,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN0F: ; RRCA
ROR.B #1,D0
SCS D7
ANDI.W #$EE,D4 ; ONLY AFFECTS X,C
ANDI.W #$11,D7
OR.B D7,D4
MOVEQ.B #0,D5 ; SET EXTENDED Z80 FLG TO N=0 H=0
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN10: ; DJNZ X
ROL.W #8,D3
SUBQ.B #1,D3
BEQ.B .L1
ROL.W #8,D3
EXT.W D1
ADDA.W D1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1 ROL.W #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN11: ; LD DE,XXXX
ROL.W #8,D1
MOVE.B (A2)+,D1
ROL.W #8,D1
SWAP D3
MOVE.W D1,D3
SWAP D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN12: ; LD (DE),A
MOVEQ #0,D1
SWAP D3
MOVE.W D3,D1
SWAP D3
CMPI.W #$4000,D1 ; if DE >= 4000 do the instruction
BCS.B .L1
MOVE.B D0,(A0,D1.L)
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if DE <= 3C00 we are in ROM so do nothing
BHI.B .L2
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B D0,D6 ; DE is pointing at the screen so update the
MOVE.B D0,(A0,D1.L) ; screen with A
BSR _screenwrite
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN13: ; INC DE
SWAP D3
ADDQ.W #1,D3
SWAP D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN14: ; INC D
MOVE.W D4,D6
ROL.L #8,D3
MOVE.W D4,CCR
ADDQ.B #1,D3
MOVE.W CCR,D4
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D6
OR.B D6,D4 ; SET X,C IF PREVIUOSLY SET
MOVE.B D3,D7
ROR.L #8,D3
ANDI.W #$00FF,D7 ; EXT D7 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D7.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN15: ; DEC D
MOVE.W D4,D6
ROL.L #8,D3
MOVE.W D4,CCR
SUBQ.B #1,D3
MOVE.W CCR,D4
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D6
OR.B D6,D4 ; SET X,C IF PREVIUOSLY SET
MOVE.B D3,D7
ROR.L #8,D3
ANDI.W #$00FF,D7 ; EXT D7 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D7.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN16: ; LD D,X
ROL.L #8,D3
MOVE.B D1,D3
ROR.L #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN17: ; RLA
MOVE.W D4,CCR
ROXL.B #1,D0
SCS D7
ANDI.W #$EE,D4 ; ONLY AFFECTS X,C
ANDI.W #$11,D7
OR.B D7,D4
MOVEQ.B #0,D5 ; SET EXTENDED Z80 FLG TO N=0 H=0
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN18: ; JR X
EXT.W D1
ADDA.W D1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN19: ; ADD HL,DE
ANDI.B #$EE,D4 ; MASK X,C
MOVE.L D3,D1
SWAP D1
ADD.W D1,D2
SCS.B D7
ANDI.B #$11,D7
OR.B D7,D4
MOVEQ #0,D5 ; SET H=0 N=0
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN1A: ; LD A,(DE)
MOVEQ #0,D1
SWAP D3
MOVE.W D3,D1
SWAP D3
MOVE.B (A0,D1.L),D0
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN1B: ; DEC DE
SWAP D3
SUBQ.W #1,D3
SWAP D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN1C: ; INC E
MOVE.W D4,D6
SWAP D3
MOVE.W D4,CCR
ADDQ.B #1,D3
MOVE.W CCR,D4
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D6
OR.B D6,D4 ; SET X,C IF PREVIUOSLY SET
MOVE.B D3,D7
SWAP D3
ANDI.W #$00FF,D7 ; EXT D7 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D7.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN1D: ; DEC E
MOVE.W D4,D6
SWAP D3
MOVE.W D4,CCR
SUBQ.B #1,D3
MOVE.W CCR,D4
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D6
OR.B D6,D4 ; SET X,C IF PREVIUOSLY SET
MOVE.B D3,D7
SWAP D3
ANDI.W #$00FF,D7 ; EXT D7 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D7.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN1E: ; LD E,X
SWAP D3
MOVE.B D1,D3
SWAP D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN1F: ; RRA
MOVE.W D4,CCR
ROXR.B #1,D0
SCS D7
ANDI.W #$EE,D4 ; ONLY AFFECTS X,C
ANDI.W #$11,D7
OR.B D7,D4
MOVEQ.B #0,D5 ; SET EXTENDED Z80 FLG TO N=0 H=0
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN20: ; JR NZ,X
EXT.W D1
MOVE.W D4,CCR
BEQ.B M201
ADDA.W D1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
M201: MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN21: ; LD HL,XXXX
ROL.W #8,D1
MOVE.B (A2)+,D1
ROL.W #8,D1
MOVE.W D1,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN22: ; LD (XXXX),HL
ROL.W #8,D1
MOVE.B (A2)+,D1
ROL.W #8,D1
MOVEQ #0,D7
MOVE.W D1,D7
ROL.W #8,D2
MOVE.W D2,(A0,D7.L)
ROL.W #8,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN23: ; INC HL
ADDQ.W #1,D2
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN24: ; INC H
MOVE.W D4,D6
ROL.W #8,D2
MOVE.W D4,CCR
ADDQ.B #1,D2
MOVE.W CCR,D4
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D6
OR.B D6,D4 ; SET X,C IF PREVIUOSLY SET
MOVE.B D2,D7
ROL.W #8,D2
ANDI.W #$00FF,D7 ; EXT D7 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D7.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN25: ; DEC H
MOVE.W D4,D6
ROL.W #8,D2
MOVE.W D4,CCR
SUBQ.B #1,D2
MOVE.W CCR,D4
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D6
OR.B D6,D4 ; SET X,C IF PREVIUOSLY SET
MOVE.B D2,D7
ROL.W #8,D2
ANDI.W #$00FF,D7 ; EXT D7 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D7.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN26: ; LD H,X
ROL.W #8,D2
MOVE.B D1,D2
ROL.W #8,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN27:
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN28: ; JR Z,X
EXT.W D1
MOVE.W D4,CCR
BNE.B M281
ADDA.W D1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
M281: MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN29: ; ADD HL,HL
ANDI.B #$EE,D4 ; MASK X,C
ADD.W D2,D2
SCS.B D7
ANDI.B #$11,D7
OR.B D7,D4
MOVEQ #0,D5 ; SET H=0 N=0
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN2A: ; LD HL,(XXXX)
ROL.W #8,D1
MOVE.B (A2)+,D1
ROL.W #8,D1
MOVEQ #0,D7
MOVE.W D1,D7
MOVE.W (A0,D7.L),D2
ROL.W #8,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN2B: ; DEC HL
SUBQ.W #1,D2
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN2C: ; INC L
MOVE.W D4,D6
MOVE.W D4,CCR
ADDQ.B #1,D2
MOVE.W CCR,D4
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D6
OR.B D6,D4 ; SET X,C IF PREVIUOSLY SET
MOVE.B D2,D7
ANDI.W #$00FF,D7 ; EXT D7 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D7.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN2D: ; DEC L
MOVE.W D4,D6
MOVE.W D4,CCR
SUBQ.B #1,D2
MOVE.W CCR,D4
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D6
OR.B D6,D4 ; SET X,C IF PREVIUOSLY SET
MOVE.B D2,D7
ANDI.W #$00FF,D7 ; EXT D7 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D7.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN2E: ; LD L,X
MOVE.B D1,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN2F: ; CPL
NOT.B D0
MOVE.B #$12,D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN30: ; JR NC,X
EXT.W D1
MOVE.W D4,CCR
BCS.B M301
ADDA.W D1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
M301: MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN31: ; LD SP,XXXX
ROL.W #8,D1
MOVE.B (A2)+,D1
ROL.W #8,D1
MOVEQ #0,D7
MOVE.W D1,D7
MOVE.L A0,A4
ADDA.L D7,A4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN32: ; LD (XXXX),A
MOVEQ #0,D7
ROL.W #8,D1
MOVE.B (A2)+,D1
ROL.W #8,D1
MOVE.W D1,D7
CMPI.W #$4000,D7 ; if XXXX >= 4000 do the instruction
BCS.B .L1
MOVE.B D0,(A0,D7.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D7 ; if XXXX <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B D0,D6 ; XXXX is pointing at the screen so update the
MOVE.B D0,(A0,D7.L) ; screen with A
MOVE.L D7,D1
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN33: ; INC SP
ADDQ.L #1,A4
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN34: ; INC (HL)
MOVE.W D4,D7
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ADDQ.B #1,D6
MOVE.W CCR,D4
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D7
OR.B D7,D4 ; SET X,C IF PREVIUOSLY SET
MOVE.B D6,(A0,D1.L)
ANDI.W #$00FF,D6 ; EXT D7 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.B (A0,D1.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER
MOVE.W D4,CCR ; ANY MEMORY
ADDQ.B #1,D6
MOVE.W CCR,D4
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D7
OR.B D7,D4 ; SET X,C IF PREVIUOSLY SET
ANDI.W #$00FF,D6 ; EXT D7 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ADDQ.B #1,D6
MOVE.W CCR,D4
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D7
OR.B D7,D4 ; SET X,C IF PREVIUOSLY SET
MOVE.B D6,(A0,D1.L)
ANDI.W #$00FF,D6 ; EXT D7 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN35: ; DEC (HL)
MOVE.W D4,D7
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
SUBQ.B #1,D6
MOVE.W CCR,D4
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D7
OR.B D7,D4 ; SET X,C IF PREVIUOSLY SET
MOVE.B D6,(A0,D1.L)
ANDI.W #$00FF,D6 ; EXT D7 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.B (A0,D1.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER
MOVE.W D4,CCR ; ANY MEMORY
SUBQ.B #1,D6
MOVE.W CCR,D4
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D7
OR.B D7,D4 ; SET X,C IF PREVIUOSLY SET
ANDI.W #$00FF,D6 ; EXT D7 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
SUBQ.B #1,D6
MOVE.W CCR,D4
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D7
OR.B D7,D4 ; SET X,C IF PREVIUOSLY SET
MOVE.B D6,(A0,D1.L)
ANDI.W #$00FF,D6 ; EXT D7 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN36: ; LD (HL),X
MOVEQ #0,D7
MOVE.W D2,D7
CMPI.W #$4000,D7 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B D1,(A0,D7.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D7 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B D1,D6 ; HL is pointing at the screen so update the
MOVE.B D1,(A0,D7.L) ; screen with A
MOVE.L D7,D1
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN37: ; SCF
ORI.B #$11,D4
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN38: ; JR C,X
EXT.W D1
MOVE.W D4,CCR
BCC.B M381
ADDA.W D1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
M381: MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN39: ; ADD HL,SP
ANDI.B #$EE,D4 ; MASK X,C
SUBA.L A0,A4
MOVE.L A4,D7
ADD.W D7,D2
SCS.B D7
ANDI.B #$11,D7
OR.B D7,D4
ADDA.L A0,A4
MOVEQ #0,D5 ; SET H=0 N=0
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN3A: ; LD A,(XXXX)
ROL.W #8,D1
MOVE.B (A2)+,D1
ROL.W #8,D1
MOVEQ #0,D7
MOVE.W D1,D7
MOVE.B (A0,D7.L),D0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN3B: ; DEC SP
SUBQ.L #1,A4
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN3C: ; INC A
MOVE.W D4,D6
MOVE.W D4,CCR
ADDQ.B #1,D0
MOVE.W CCR,D4
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D6
OR.B D6,D4 ; SET X,C IF PREVIUOSLY SET
ANDI.W #$00FF,D0 ; EXT D7 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN3D: ; DEC A
MOVE.W D4,D6
MOVE.W D4,CCR
SUBQ.B #1,D0
MOVE.W CCR,D4
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D6
OR.B D6,D4 ; SET X,C IF PREVIUOSLY SET
ANDI.W #$00FF,D0 ; EXT D7 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN3E: ; LD A,X
MOVE.B D1,D0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN3F: ; CCF
MOVE.W D4,CCR
SCC.B D7
ANDI.B #$EE,D4
ANDI.B #$11,D7
OR.B D7,D4
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN40: ; LD B,B (NOP)
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN41: ; LD B,C
MOVE.B D3,D1
ROL.W #8,D3
MOVE.B D1,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN42: ; LD B,D
ROL.L #8,D3
MOVE.B D3,D1
ROR.L #8,D3
ROL.W #8,D3
MOVE.B D1,D3
ROL.W #8,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN43: ; LD B,E
SWAP D3
MOVE.B D3,D1
SWAP D3
ROL.W #8,D3
MOVE.B D1,D3
ROL.W #8,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN44: ; LD B,H
MOVE.W D2,D1
ROL.W #8,D1
ROL.W #8,D3
MOVE.B D1,D3
ROL.W #8,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN45: ; LD B,L
ROL.W #8,D3
MOVE.B D2,D3
ROL.W #8,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN46: ; LD B,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
ROL.W #8,D3
MOVE.B (A0,D1.L),D3
ROL.W #8,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN47: ; LD B,A
ROL.W #8,D3
MOVE.B D0,D3
ROL.W #8,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN48: ; LD C,B
MOVE.W D3,D1
ROL.W #8,D1
MOVE.B D1,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN49: ; LD C,C (NOP)
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN4A: ; LD C,D
ROL.L #8,D3
MOVE.B D3,D1
ROR.L #8,D3
MOVE.B D1,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN4B: ; LD C,E
SWAP D3
MOVE.B D3,D1
SWAP D3
MOVE.B D1,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN4C: ; LD C,H
MOVE.L D2,D1
ROL.W #8,D1
MOVE.B D1,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN4D: ; LD C,L
MOVE.B D2,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN4E: ; LD C,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
MOVE.B (A0,D1.L),D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN4F: ; LD C,A
MOVE.B D0,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN50: ; LD D,B
MOVE.W D3,D1
ROR.W #8,D1
ROL.L #8,D3
MOVE.B D1,D3
ROR.L #8,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN51: ; LD D,C
MOVE.W D3,D1
ROL.L #8,D3
MOVE.B D1,D3
ROR.L #8,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN52: ; LD D,D (NOP)
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN53: ; LD D,E
SWAP D3
MOVE.W D3,D1
ROL.W #8,D3
MOVE.B D1,D3
SWAP D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN54: ; LD D,H
MOVE.W D2,D1
ROL.W #8,D1
ROL.L #8,D3
MOVE.B D1,D3
ROR.L #8,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN55: ; LD D,L
ROL.L #8,D3
MOVE.B D2,D3
ROR.L #8,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN56: ; LD D,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
ROL.L #8,D3
MOVE.B (A0,D1.L),D3
ROR.L #8,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN57: ; LD D,A
ROL.L #8,D3
MOVE.B D0,D3
ROR.L #8,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN58: ; LD E,B
MOVE.W D3,D1
ROL.W #8,D1
SWAP D3
MOVE.B D1,D3
SWAP D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN59: ; LD E,C
MOVE.W D3,D1
SWAP D3
MOVE.B D1,D3
SWAP D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN5A: ; LD E,D
MOVE.L D3,D1
ROL.L #8,D1
SWAP D3
MOVE.B D1,D3
SWAP D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN5B: ; LD E,E (NOP)
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN5C: ; LD E,H
MOVE.W D2,D1
ROL.W #8,D1
SWAP D3
MOVE.B D1,D3
SWAP D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN5D: ; LD E,L
SWAP D3
MOVE.B D2,D3
SWAP D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN5E: ; LD E,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
SWAP D3
MOVE.B (A0,D1.L),D3
SWAP D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN5F: ; LD E,A
SWAP D3
MOVE.B D0,D3
SWAP D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN60: ; LD H,B
ROL.W #8,D2
ROL.W #8,D3
MOVE.B D3,D2
ROL.W #8,D3
ROL.W #8,D2
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN61: ; LD H,C
ROL.W #8,D2
MOVE.B D3,D2
ROL.W #8,D2
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN62: ; LD H,D
ROL.W #8,D2
ROL.L #8,D3
MOVE.B D3,D2
ROR.L #8,D3
ROL.W #8,D2
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN63: ; LD H,E
ROL.W #8,D2
SWAP D3
MOVE.B D3,D2
SWAP D3
ROL.W #8,D2
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN64: ; LD H,H (NOP)
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN65: ; LD H,L
MOVE.W D2,D1
ROL.W #8,D2
MOVE.B D1,D2
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN66: ; LD H,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
ROL.W #8,D2
MOVE.B (A0,D1.L),D2
ROL.W #8,D2
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN67: ; LD H,A
ROL.W #8,D2
MOVE.B D0,D2
ROL.W #8,D2
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN68: ; LD L,B
ROL.W #8,D3
MOVE.B D3,D2
ROL.W #8,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN69: ; LD L,C
MOVE.B D3,D2
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN6A: ; LD L,D
ROL.L #8,D3
MOVE.B D3,D2
ROR.L #8,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN6B: ; LD L,E
SWAP D3
MOVE.B D3,D2
SWAP D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN6C: ; LD L,H
MOVE.W D2,D1
ROL.W #8,D1
MOVE.B D2,D2
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN6D: ; LD L,L (NOP)
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN6E: ; LD L,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
MOVE.B (A0,D1.L),D2
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN6F: ; LD L,A
MOVE.B D0,D2
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN70: ; LD (HL),B
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
ROL.W #8,D3
MOVE.B D3,(A0,D1.L)
ROL.W #8,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
ROL.W #8,D3
MOVE.B D3,D6 ; HL is pointing at the screen so update the
MOVE.B D3,(A0,D1.L) ; screen with L
ROL.W #8,D3
BSR _screenwrite
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN71: ; LD (HL),C
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B D3,(A0,D1.L)
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B D3,D6 ; HL is pointing at the screen so update the
MOVE.B D3,(A0,D1.L) ; screen with A
BSR _screenwrite
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN72: ; LD (HL),D
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
ROL.L #8,D3
MOVE.B D3,(A0,D1.L)
ROR.L #8,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
ROL.L #8,D3
MOVE.B D3,D6 ; HL is pointing at the screen so update the
MOVE.B D3,(A0,D1.L) ; screen with L
ROR.L #8,D3
BSR _screenwrite
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN73: ; LD (HL),E
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
SWAP D3
MOVE.B D3,(A0,D1.L)
SWAP D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
SWAP D3
MOVE.B D3,D6 ; HL is pointing at the screen so update the
MOVE.B D3,(A0,D1.L) ; screen with L
SWAP D3
BSR _screenwrite
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN74: ; LD (HL),H
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
ROL.W #8,D2
MOVE.B D2,(A0,D1.L)
ROL.W #8,D2
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
ROL.W #8,D2
MOVE.B D2,D6 ; HL is pointing at the screen so update the
MOVE.B D2,(A0,D1.L) ; screen with L
ROL.W #8,D2
BSR _screenwrite
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN75: ; LD (HL),L
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B D2,(A0,D1.L)
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B D2,D6 ; HL is pointing at the screen so update the
MOVE.B D2,(A0,D1.L) ; screen with L
BSR _screenwrite
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN76: ; HALT (RETURN TO MAIN TASK)
MOVEM.L (SP)+,A0-A6/D0-D7
RTS
MAIN77: ; LD (HL),A
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B D0,(A0,D1.L)
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B D0,D6 ; HL is pointing at the screen so update the
MOVE.B D0,(A0,D1.L) ; screen with A
BSR _screenwrite
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN78: ; LD A,B
MOVE.W D3,D1
ROL.W #8,D1
MOVE.B D1,D0
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN79: ; LD A,C
MOVE.B D3,D0
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN7A: ; LD A,D
MOVE.L D3,D1
ROL.L #8,D1
MOVE.B D1,D0
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN7B: ; LD A,E
MOVE.L D3,D1
SWAP D1
MOVE.B D1,D0
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN7C: ; LD A,H
MOVE.W D2,D1
ROL.W #8,D1
MOVE.B D1,D0
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN7D: ; LD A,L
MOVE.B D2,D0
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN7E: ; LD A,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
MOVE.B (A0,D1.L),D0
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN7F: ; LD A,A (NOP)
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN80: ; ADD A,B
MOVE.W D3,D1
ROL.W #8,D1
MOVE.W D4,CCR
ADD.B D1,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN81: ; ADD A,C
MOVE.W D4,CCR
ADD.B D3,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN82: ; ADD A,D
MOVE.L D3,D1
ROL.L #8,D1
MOVE.W D4,CCR
ADD.B D1,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN83: ; ADD A,E
MOVE.L D3,D1
SWAP D1
MOVE.W D4,CCR
ADD.B D1,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN84: ; ADD A,H
MOVE.W D2,D1
ROL.W #8,D1
MOVE.W D4,CCR
ADD.B D1,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN85: ; ADD A,L
MOVE.W D4,CCR
ADD.B D2,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN86: ; ADD A,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
MOVE.W D4,CCR
ADD.B (A0,D1.L),D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN87: ; ADD A,A
MOVE.W D4,CCR
ADD.B D0,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN88: ; ADC A,B
MOVE.W D3,D1
ROL.W #8,D1
ORI.B #4,D4
MOVE.W D4,CCR
ADDX.B D1,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN89: ; ADC A,C
ORI.B #4,D4
MOVE.W D4,CCR
ADDX.B D3,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN8A: ; ADC A,D
MOVE.L D3,D1
ROL.L #8,D1
ORI.B #4,D4
MOVE.W D4,CCR
ADDX.B D1,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN8B: ; ADC A,E
MOVE.L D3,D1
SWAP D1
ORI.B #4,D4
MOVE.W D4,CCR
ADDX.B D1,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN8C: ; ADC A,H
MOVE.W D2,D1
ROL.W #8,D1
ORI.B #4,D4
MOVE.W D4,CCR
ADDX.B D1,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN8D: ; ADC A,L
ORI.B #4,D4
MOVE.W D4,CCR
ADDX.B D2,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN8E: ; ADC A,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
MOVE.B (A0,D1.L),D7
ORI.B #4,D4
MOVE.W D4,CCR
ADDX.B D7,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN8F: ; ADC A,A
ORI.B #4,D4
MOVE.W D4,CCR
ADDX.B D0,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN90: ; SUB B
MOVE.W D3,D1
ROL.W #8,D1
MOVE.W D4,CCR
SUB.B D1,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN91: ; SUB C
MOVE.W D4,CCR
SUB.B D3,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN92: ; SUB D
MOVE.L D3,D1
ROL.L #8,D1
MOVE.W D4,CCR
SUB.B D1,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN93: ; SUB E
MOVE.L D3,D1
SWAP D1
MOVE.W D4,CCR
SUB.B D1,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN94: ; SUB H
MOVE.W D2,D1
ROL.W #8,D1
MOVE.W D4,CCR
SUB.B D1,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN95: ; SUB L
MOVE.W D4,CCR
SUB.B D2,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN96: ; SUB (HL)
MOVEQ #0,D1
MOVE.W D2,D1
MOVE.W D4,CCR
SUB.B (A0,D1.L),D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN97: ; SUB A
MOVE.W D4,CCR
SUB.B D0,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN98: ; SBC A,B
ORI.B #$04,D4 ; SET Z FLG
MOVE.W D3,D1
ROL.W #8,D1
MOVE.W D4,CCR
SUBX.B D1,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN99: ; SBC A,C
ORI.B #$04,D4 ; SET Z FLG
MOVE.W D4,CCR
SUBX.B D3,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN9A: ; SBC A,D
ORI.B #$04,D4 ; SET Z FLG
MOVE.L D3,D1
ROL.L #8,D1
MOVE.W D4,CCR
SUBX.B D1,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN9B: ; SBC A,E
ORI.B #$04,D4 ; SET Z FLG
MOVE.L D3,D1
SWAP D1
MOVE.W D4,CCR
SUBX.B D1,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN9C: ; SBC A,H
ORI.B #$04,D4 ; SET Z FLG
MOVE.W D2,D1
ROL.W #8,D1
MOVE.W D4,CCR
SUBX.B D1,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN9D: ; SBC A,L
ORI.B #$04,D4 ; SET Z FLG
MOVE.W D4,CCR
SUBX.B D2,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN9E: ; SBC A,(HL)
ORI.B #$04,D4 ; SET Z FLG
MOVEQ #0,D1
MOVE.W D2,D1
MOVE.B (A0,D1.L),D7
MOVE.W D4,CCR
SUBX.B D7,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIN9F: ; SBC A,A
ORI.B #$04,D4 ; SET Z FLG
MOVE.W D4,CCR
SUBX.B D0,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINA0: ; AND B
MOVE.W D3,D1
ROL.W #8,D1
MOVE.W D4,CCR
AND.B D1,D0
ANDI #$0F,CCR ; CLEAR X
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO PARITY TABLE
OR.B (A6,D0.W),D4 ; SET V FLG TO PARITY TABLE VALUE
MOVE.B #$10,D5 ; SET EXTENDED Z80 FLG TO N=0 H=1
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINA1: ; AND C
MOVE.W D4,CCR
AND.B D3,D0
ANDI #$0F,CCR
MOVE.W CCR,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVE.B #$10,D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINA2: ; AND D
MOVE.L D3,D1
ROL.L #8,D1
MOVE.W D4,CCR
AND.B D1,D0
ANDI #$0F,CCR
MOVE.W CCR,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVE.B #$10,D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINA3: ; AND E
MOVE.L D3,D1
SWAP D1
MOVE.W D4,CCR
AND.B D1,D0
ANDI #$0F,CCR
MOVE.W CCR,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVE.B #$10,D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINA4: ; AND H
MOVE.W D2,D1
ROL.W #8,D1
MOVE.W D4,CCR
AND.B D1,D0
ANDI #$0F,CCR
MOVE.W CCR,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVE.B #$10,D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINA5: ; AND L
MOVE.W D4,CCR
AND.B D2,D0
ANDI #$0F,CCR
MOVE.W CCR,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVE.B #$10,D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINA6: ; AND (HL)
MOVEQ #0,D1
MOVE.W D2,D1
MOVE.W D4,CCR
AND.B (A0,D1.L),D0
ANDI #$0F,CCR
MOVE.W CCR,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVE.B #$10,D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINA7: ; AND A
MOVE.W D4,CCR
AND.B D0,D0
ANDI #$0F,CCR
MOVE.W CCR,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVE.B #$10,D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINA8: ; XOR B
MOVE.W D3,D1
ROL.W #8,D1
MOVE.W D4,CCR
EOR.B D1,D0
ANDI #$0F,CCR ; CLEAR X
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO PARITY TABLE
OR.B (A6,D0.W),D4 ; SET V FLG TO PARITY TABLE VALUE
MOVEQ.B #0,D5 ; SET EXTENDED Z80 FLG TO N=0 H=0
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINA9: ; XOR C
MOVE.W D4,CCR
EOR.B D3,D0
ANDI #$0F,CCR
MOVE.W CCR,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVEQ.B #0,D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINAA: ; XOR D
MOVE.L D3,D1
ROL.L #8,D1
MOVE.W D4,CCR
EOR.B D1,D0
ANDI #$0F,CCR
MOVE.W CCR,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVEQ.B #0,D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINAB: ; XOR E
MOVE.L D3,D1
SWAP D1
MOVE.W D4,CCR
EOR.B D1,D0
ANDI #$0F,CCR
MOVE.W CCR,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVEQ.B #0,D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINAC: ; XOR H
MOVE.W D2,D1
ROL.W #8,D1
MOVE.W D4,CCR
EOR.B D1,D0
ANDI #$0F,CCR
MOVE.W CCR,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVEQ.B #0,D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINAD: ; XOR L
MOVE.W D4,CCR
EOR.B D2,D0
ANDI #$0F,CCR
MOVE.W CCR,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVEQ.B #0,D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINAE: ; XOR (HL)
MOVEQ #0,D1
MOVE.W D2,D1
MOVE.B (A0,D1.L),D7
MOVE.W D4,CCR
EOR.B D7,D0
ANDI #$0F,CCR
MOVE.W CCR,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVEQ.B #0,D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINAF: ; XOR A
MOVE.W D4,CCR
EOR.B D0,D0
ANDI #$0F,CCR
MOVE.W CCR,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVEQ.B #0,D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINB0: ; OR B
MOVE.W D3,D1
ROL.W #8,D1 ; CONDITION FLAGS SAME AS XOR
MOVE.W D4,CCR
OR.B D1,D0
ANDI #$0F,CCR
MOVE.W CCR,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVEQ.B #0,D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINB1: ; OR C
MOVE.W D4,CCR
OR.B D3,D0
ANDI #$0F,CCR
MOVE.W CCR,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVEQ.B #0,D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINB2: ; OR D
MOVE.L D3,D1
ROL.L #8,D1
MOVE.W D4,CCR
OR.B D1,D0
ANDI #$0F,CCR
MOVE.W CCR,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVEQ.B #0,D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINB3: ; OR E
MOVE.L D3,D1
SWAP D1
MOVE.W D4,CCR
OR.B D1,D0
ANDI #$0F,CCR
MOVE.W CCR,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVEQ.B #0,D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINB4: ; OR H
MOVE.W D2,D1
ROL.W #8,D1
MOVE.W D4,CCR
OR.B D1,D0
ANDI #$0F,CCR
MOVE.W CCR,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVEQ.B #0,D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINB5: ; OR L
MOVE.W D4,CCR
OR.B D2,D0
ANDI #$0F,CCR
MOVE.W CCR,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVEQ.B #0,D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINB6: ; OR (HL)
MOVEQ #0,D1
MOVE.W D2,D1
MOVE.W D4,CCR
OR.B (A0,D1.L),D0
ANDI #$0F,CCR
MOVE.W CCR,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVEQ.B #0,D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINB7: ; OR A
MOVE.W D4,CCR
OR.B D0,D0
ANDI #$0F,CCR
MOVE.W CCR,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVEQ.B #0,D5
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINB8: ; CP B
MOVE.B D0,D6
MOVE.W D3,D1
ROL.W #8,D1
MOVE.W D4,CCR
SUB.B D1,D6
MOVE.W CCR,D4
ANDI.W #$00FF,D6 ; EXT D6 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINB9: ; CP C
MOVE.B D0,D6
MOVE.W D4,CCR
SUB.B D3,D6
MOVE.W CCR,D4
ANDI.W #$00FF,D6 ; EXT D6 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINBA: ; CP D
MOVE.B D0,D6
MOVE.L D3,D1
ROL.L #8,D1
MOVE.W D4,CCR
SUB.B D1,D6
MOVE.W CCR,D4
ANDI.W #$00FF,D6 ; EXT D6 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINBB: ; CP E
MOVE.B D0,D6
MOVE.L D3,D1
SWAP D1
MOVE.W D4,CCR
SUB.B D1,D6
MOVE.W CCR,D4
ANDI.W #$00FF,D6 ; EXT D6 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINBC: ; CP H
MOVE.B D0,D6
MOVE.W D2,D1
ROL.W #8,D1
MOVE.W D4,CCR
SUB.B D1,D6
MOVE.W CCR,D4
ANDI.W #$00FF,D6 ; EXT D0 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINBD: ; CP L
MOVE.B D0,D6
MOVE.W D4,CCR
SUB.B D2,D6
MOVE.W CCR,D4
ANDI.W #$00FF,D6 ; EXT D0 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINBE: ; CP (HL)
MOVE.B D0,D6
MOVEQ #0,D1
MOVE.W D2,D1
MOVE.W D4,CCR
SUB.B (A0,D1.L),D6
MOVE.W CCR,D4
ANDI.W #$00FF,D6 ; EXT D6 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINBF: ; CP A
MOVE.B D0,D6
MOVE.W D4,CCR
SUB.B D0,D6
MOVE.W CCR,D4
ANDI.W #$00FF,D6 ; EXT D6 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINC0: ; RET NZ
MOVE.W D4,CCR
BEQ.B C01
MOVEQ #0,D7
MOVE.W (A4)+,D7
ROL.W #8,D7
MOVE.L A0,A2
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
C01: SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINC1: ; POP BC
ROL.W #8,D3
MOVE.W (A4)+,D3
ROL.W #8,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINC2: ; JP NZ,XXXX
ROL.W #8,D1
MOVE.B (A2)+,D1
ROL.W #8,D1
MOVE.W D4,CCR
BEQ.B C21
MOVEQ #0,D7
MOVE.W D1,D7
MOVE.L A0,A2
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
C21: MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINC3: ; JP XXXX
ROL.W #8,D1
MOVE.B (A2)+,D1
ROL.W #8,D1
MOVEQ #0,D7
MOVE.W D1,D7
MOVE.L A0,A2
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINC4: ; CALL NZ,XXXX
ROL.W #8,D1
MOVE.B (A2)+,D1
ROL.W #8,D1
MOVE.W D4,CCR
BEQ.B C41
SUBA.L A0,A2
MOVE.L A2,D7
ROL.W #8,D7
MOVE.W D7,-(A4)
MOVE.L A0,A2
MOVE.W D1,D7
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
C41: MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINC5: ; PUSH BC
ROL.W #8,D3
MOVE.W D3,-(A4)
ROL.W #8,D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINC6: ; ADD A,X
MOVE.W D4,CCR
ADD.B D1,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINC7: ; RST 00
SUBQ.L #1,A2
SUBA.L A0,A2
MOVE.W A2,D7
ROL.W #8,D7
MOVE.W D7,-(A4)
MOVE.L A0,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINC8: ; RET Z
MOVE.W D4,CCR
BNE.B C81
MOVEQ #0,D7
MOVE.W (A4)+,D7
ROL.W #8,D7
MOVE.L A0,A2
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
C81: SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINC9: ; RET
MOVEQ #0,D7
MOVE.W (A4)+,D7
ROL.W #8,D7
MOVE.L A0,A2
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINCA: ; JP Z,XXXX
ROL.W #8,D1
MOVE.B (A2)+,D1
ROL.W #8,D1
MOVE.W D4,CCR
BNE.B CA1
MOVEQ #0,D7
MOVE.W D1,D7
MOVE.L A0,A2
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
CA1: MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINCC: ; CALL Z,XXXX
ROL.W #8,D1
MOVE.B (A2)+,D1
ROL.W #8,D1
MOVE.W D4,CCR
BNE.B CC1
SUBA.L A0,A2
MOVE.L A2,D7
ROL.W #8,D7
MOVE.W D7,-(A4)
MOVE.L A0,A2
MOVE.W D1,D7
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
CC1: MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINCD: ; CALL XXXX
ROL.W #8,D1
MOVE.B (A2)+,D1
ROL.W #8,D1
SUBA.L A0,A2
MOVE.L A2,D7
ROL.W #8,D7
MOVE.W D7,-(A4)
MOVE.L A0,A2
MOVE.W D1,D7
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINCE: ; ADC A,X
ORI.B #4,D4
MOVE.W D4,CCR
ADDX.B D1,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D7 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINCF: ; RST 08
SUBQ.L #1,A2
SUBA.L A0,A2
MOVE.W A2,D7
ROL.W #8,D7
MOVE.W D7,-(A4)
MOVE.L A0,A2
ADDA.L #8,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIND0: ; RET NC
MOVE.W D4,CCR
BCS.B D01
MOVEQ #0,D7
MOVE.W (A4)+,D7
ROL.W #8,D7
MOVE.L A0,A2
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
D01: SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIND1: ; POP DE
SWAP D3
ROL.W #8,D3
MOVE.W (A4)+,D3
ROL.W #8,D3
SWAP D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIND2: ; JP NC,XXXX
ROL.W #8,D1
MOVE.B (A2)+,D1
ROL.W #8,D1
MOVE.W D4,CCR
BCS.B D21
MOVEQ #0,D7
MOVE.W D1,D7
MOVE.L A0,A2
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
D21: MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIND3: ; OUT (N),A (NOP)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIND4: ; CALL NC,XXXX
ROL.W #8,D1
MOVE.B (A2)+,D1
ROL.W #8,D1
MOVE.W D4,CCR
BCS.B D41
SUBA.L A0,A2
MOVE.L A2,D7
ROL.W #8,D7
MOVE.W D7,-(A4)
MOVE.L A0,A2
MOVE.W D1,D7
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
D41: MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIND5: ; PUSH DE
SWAP D3
ROL.W #8,D3
MOVE.W D3,-(A4)
ROL.W #8,D3
SWAP D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIND6: ; SUB X
MOVE.W D4,CCR
SUB.B D1,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D7 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIND7: ; RST 10
SUBQ.L #1,A2
SUBA.L A0,A2
MOVE.W A2,D7
ROL.W #8,D7
MOVE.W D7,-(A4)
MOVE.L A0,A2
ADDA.L #$10,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIND8: ; RET C
MOVE.W D4,CCR
BCC.B D81
MOVEQ #0,D7
MOVE.W (A4)+,D7
ROL.W #8,D7
MOVE.L A0,A2
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
D81: SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAIND9: ; EXX
MOVE.W D2,HL
MOVE.W D3,BC
SWAP D3
MOVE.W D3,DE
MOVE.W ADE,D3
SWAP D3
MOVE.W ABC,D3
MOVE.W AHL,D2
MOVE.W HL,AHL
MOVE.W BC,ABC
MOVE.W DE,ADE
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINDA: ; JP C,XXXX
ROL.W #8,D1
MOVE.B (A2)+,D1
ROL.W #8,D1
MOVE.W D4,CCR
BCC.B DA1
MOVEQ #0,D7
MOVE.W D1,D7
MOVE.L A0,A2
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DA1: MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINDB: ; IN A,(N) (NOP)
MOVEQ #0,D0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINDC: ; CALL C,XXXX
ROL.W #8,D1
MOVE.B (A2)+,D1
ROL.W #8,D1
MOVE.W D4,CCR
BCC.B DC1
SUBA.L A0,A2
MOVE.L A2,D7
ROL.W #8,D7
MOVE.W D7,-(A4)
MOVE.L A0,A2
MOVE.W D1,D7
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DC1: MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINDE: ; SBC A,X
MOVE.W D4,CCR
SUBX.B D1,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D7 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINDF: ; RST 18
SUBQ.L #1,A2
SUBA.L A0,A2
MOVE.W A2,D7
ROL.W #8,D7
MOVE.W D7,-(A4)
MOVE.L A0,A2
ADDA.L #$18,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINE0: ; RET PO
MOVE.W D4,CCR
BVS.B E01
MOVEQ #0,D7
MOVE.W (A4)+,D7
ROL.W #8,D7
MOVE.L A0,A2
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
E01: SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINE1: ; POP HL
ROL.W #8,D2
MOVE.W (A4)+,D2
ROL.W #8,D2
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINE2: ; JP PO,XXXX
ROL.W #8,D1
MOVE.B (A2)+,D1
ROL.W #8,D1
MOVE.W D4,CCR
BVS.B E21
MOVEQ #0,D7
MOVE.W D1,D7
MOVE.L A0,A2
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
E21: MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINE3: ; EX (SP),HL
MOVE.W D2,D7
MOVE.W (A4),D2
ROL.W #8,D2
ROL.W #8,D7
MOVE.W D7,(A4)
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINE4: ; CALL PO,XXXX
ROL.W #8,D1
MOVE.B (A2)+,D1
ROL.W #8,D1
MOVE.W D4,CCR
BVS.B E41
SUBA.L A0,A2
MOVE.L A2,D7
ROL.W #8,D7
MOVE.W D7,-(A4)
MOVE.L A0,A2
MOVE.W D1,D7
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
E41: MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINE5: ; PUSH HL
ROL.W #8,D2
MOVE.W D2,-(A4)
ROL.W #8,D2
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINE6: ; AND X
MOVE.W D4,CCR
AND.B D1,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO PARITY TABLE
OR.B (A6,D0.W),D4 ; SET V FLG TO PARITY TABLE VALUE
ANDI.W #$EE,D4 ; CLEAR C AND X
MOVE.B #$10,D5 ; SET EXTENDED Z80 FLG TO N=0 H=1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINE7: ; RST 20
SUBQ.L #1,A2
SUBA.L A0,A2
MOVE.W A2,D7
ROL.W #8,D7
MOVE.W D7,-(A4)
MOVE.L A0,A2
ADDA.L #$20,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINE8: ; RET PE
MOVE.W D4,CCR
BVC.B E81
MOVEQ #0,D7
MOVE.W (A4)+,D7
ROL.W #8,D7
MOVE.L A0,A2
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
E81: SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINE9: ; JP (HL)
MOVE.L A0,A2
MOVEQ #0,D1
MOVE.W D2,D1
ADDA.L D1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINEA: ; JP PE,XXXX
ROL.W #8,D1
MOVE.B (A2)+,D1
ROL.W #8,D1
MOVE.W D4,CCR
BVC.B EA1
MOVEQ #0,D7
MOVE.W D1,D7
MOVE.L A0,A2
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
EA1: MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINEB: ; EX DE,HL
MOVE.W D2,D1
SWAP D3
MOVE.W D3,D2
MOVE.W D1,D3
SWAP D3
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINEC: ; CALL PE,XXXX
ROL.W #8,D1
MOVE.B (A2)+,D1
ROL.W #8,D1
MOVE.W D4,CCR
BVC.B EC1
SUBA.L A0,A2
MOVE.L A2,D7
ROL.W #8,D7
MOVE.W D7,-(A4)
MOVE.L A0,A2
MOVE.W D1,D7
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
EC1: MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINEE: ; XOR X
MOVE.W D4,CCR
EOR.B D1,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO PARITY TABLE
OR.B (A6,D0.W),D4 ; SET V FLG TO PARITY TABLE VALUE
ANDI.W #$EE,D4 ; CLEAR C AND X
MOVEQ.B #0,D5 ; SET EXTENDED Z80 FLG TO N=0 H=0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINEF: ; RST 28
SUBQ.L #1,A2
SUBA.L A0,A2
MOVE.W A2,D7
ROL.W #8,D7
MOVE.W D7,-(A4)
MOVE.L A0,A2
ADDA.L #$28,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINF0: ; RET P
MOVE.W D4,CCR
BMI.B F01
MOVEQ #0,D7
MOVE.W (A4)+,D7
ROL.W #8,D7
MOVE.L A0,A2
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
F01: SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINF1: ; POP AF
MOVE.W (A4)+,D7
MOVE.B D7,D0 ; -> A REG
ROL.W #8,D7
ANDI.W #$00FF,D7 ; MASK FOR LOOKUP TABLE
MOVE.B $100(A6,D7.W),D4 ; GET 680X0 EQUIV FROM TABLE
MOVE.W D7,D5
ANDI.W #$0012,D5 ; SET H AND N FLAGS
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINF2: ; JP P,XXXX
ROL.W #8,D1
MOVE.B (A2)+,D1
ROL.W #8,D1
MOVE.W D4,CCR
BMI.B F21
MOVEQ #0,D7
MOVE.W D1,D7
MOVE.L A0,A2
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
F21: MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINF3: ; DI (NOP)
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINF4: ; CALL P,XXXX
ROL.W #8,D1
MOVE.B (A2)+,D1
ROL.W #8,D1
MOVE.W D4,CCR
BMI.B F41
SUBA.L A0,A2
MOVE.L A2,D7
ROL.W #8,D7
MOVE.W D7,-(A4)
MOVE.L A0,A2
MOVE.W D1,D7
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
F41: MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINF5: ; PUSH AF
ANDI.W #$001F,D4 ; INDEX INTO FLG TABLE
MOVE.B $200(A6,D4.W),D7; GET Z80 FLAGS FROM LOOKUP TABLE
OR.B D5,D7 ; SET H AND N IN FLAGS
ROL.W #8,D7
MOVE.B D0,D7 ; GET A REG
MOVE.W D7,-(A4) ; SAVE ON STACK
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINF6: ; OR X
MOVE.W D4,CCR
OR.B D1,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO PARITY TABLE
OR.B (A6,D0.W),D4 ; SET V FLG TO PARITY TABLE VALUE
ANDI.W #$EE,D4 ; CLEAR C AND X
MOVEQ.B #0,D5 ; SET EXTENDED Z80 FLG TO N=0 H=0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINF7: ; RST 30
SUBQ.L #1,A2
SUBA.L A0,A2
MOVE.W A2,D7
ROL.W #8,D7
MOVE.W D7,-(A4)
MOVE.L A0,A2
ADDA.L #$30,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINF8: ; RET M
MOVE.W D4,CCR
BPL.B F81
MOVEQ #0,D7
MOVE.W (A4)+,D7
ROL.W #8,D7
MOVE.L A0,A2
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
F81: SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINF9: ; LD SP,HL
MOVE.L A0,A4
MOVEQ #0,D7
MOVE.W D2,D7
ADDA.L D7,A4
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINFA: ; JP M,XXXX
ROL.W #8,D1
MOVE.B (A2)+,D1
ROL.W #8,D1
MOVE.W D4,CCR
BPL.B FA1
MOVEQ #0,D7
MOVE.W D1,D7
MOVE.L A0,A2
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FA1: MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINFB: ; EI (NOP)
SUBQ.L #1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINFC: ; CALL M,XXXX
ROL.W #8,D1
MOVE.B (A2)+,D1
ROL.W #8,D1
MOVE.W D4,CCR
BPL.B FC1
SUBA.L A0,A2
MOVE.L A2,D7
ROL.W #8,D7
MOVE.W D7,-(A4)
MOVE.L A0,A2
MOVE.W D1,D7
ADDA.L D7,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FC1: MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINFE: ; CP X
MOVE.B D0,D6
MOVE.W D4,CCR
SUB.B D1,D6
MOVE.W CCR,D4
ANDI.W #$00FF,D6 ; EXT D6 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MAINFF: ; RST 38
SUBQ.L #1,A2
SUBA.L A0,A2
MOVE.W A2,D7
ROL.W #8,D7
MOVE.W D7,-(A4)
MOVE.L A0,A2
ADDA.L #$38,A2
MOVE.W (A2)+,D1
JMP ([A3,D1.W*4])
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
* CB INSTRUCTIONS
MCB00: ; RLC B
ROL.W #8,D3
MOVE.W D4,CCR
ROL.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$11,D7 ; SET X = C BIT
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6 ; EXT D0 FOR INDEX INTO PARITY TABLE
OR.B (A6,D6.W),D4 ; SET V FLG TO PARITY TABLE VALUE
MOVEQ.B #0,D5 ; SET EXTENDED Z80 FLG TO N=0 H=0
ROL.W #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB01: ; RLC C
MOVE.W D4,CCR
ROL.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$11,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB02: ; RLC D
ROL.L #8,D3
MOVE.W D4,CCR
ROL.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
ROR.L #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB03: ; RLC E
SWAP D3
MOVE.W D4,CCR
ROL.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
SWAP D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB04: ; RLC H
ROL.W #8,D2
MOVE.W D4,CCR
ROL.B #1,D2
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D2,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
ROL.W #8,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB05: ; RLC L
MOVE.W D4,CCR
ROL.B #1,D2
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D2,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB06: ; RLC (HL)
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ROL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.B (A0,D1.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER (HL)
ROL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ROL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB07: ; RLC A
MOVE.W D4,CCR
ROL.B #1,D0
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB08: ; RRC B
ROL.W #8,D3
MOVE.W D4,CCR
ROR.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
ROL.W #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB09: ; RRC C
MOVE.W D4,CCR
ROR.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB0A: ; RRC D
ROL.L #8,D3
MOVE.W D4,CCR
ROR.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
ROR.L #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB0B: ; RRC E
SWAP D3
MOVE.W D4,CCR
ROR.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
SWAP D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB0C: ; RRC H
ROL.W #8,D2
MOVE.W D4,CCR
ROR.B #1,D2
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D2,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
ROL.W #8,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB0D: ; RRC L
MOVE.W D4,CCR
ROR.B #1,D2
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D2,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB0E: ; RRC (HL)
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ROR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.B (A0,D1.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER (HL)
ROR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ROR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB0F: ; RRC A
MOVE.W D4,CCR
ROR.B #1,D0
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB10: ; RL B
ROL.W #8,D3
MOVE.W D4,CCR
ROXL.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
ROL.W #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB11: ; RL C
MOVE.W D4,CCR
ROXL.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB12: ; RL D
ROL.L #8,D3
MOVE.W D4,CCR
ROXL.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
ROR.L #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB13: ; RL E
SWAP D3
MOVE.W D4,CCR
ROXL.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
SWAP D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB14: ; RL H
ROL.W #8,D2
MOVE.W D4,CCR
ROXL.B #1,D2
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D2,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
ROL.W #8,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB15: ; RL L
MOVE.W D4,CCR
ROXL.B #1,D2
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D2,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB16: ; RL (HL)
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ROXL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.B (A0,D1.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER (HL)
ROXL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ROXL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB17: ; RL A
MOVE.W D4,CCR
ROXL.B #1,D0
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB18: ; RR B
ROL.W #8,D3
MOVE.W D4,CCR
ROXR.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
ROL.W #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB19: ; RR C
MOVE.W D4,CCR
ROXR.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB1A: ; RR D
ROL.L #8,D3
MOVE.W D4,CCR
ROXR.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
ROR.L #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB1B: ; RR E
SWAP D3
MOVE.W D4,CCR
ROXR.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
SWAP D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB1C: ; RR H
ROL.W #8,D2
MOVE.W D4,CCR
ROXR.B #1,D2
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D2,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
ROL.W #8,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB1D: ; RR L
MOVE.W D4,CCR
ROXR.B #1,D2
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D2,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB1E: ; RR (HL)
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ROXR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.B (A0,D1.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER (HL)
ROXR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ROXR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB1F: ; RR A
MOVE.W D4,CCR
ROXR.B #1,D0
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB20: ; SLA B
ROL.W #8,D3
MOVE.W D4,CCR
LSL.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
ROL.W #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB21: ; SLA C
MOVE.W D4,CCR
LSL.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB22: ; SLA D
ROL.L #8,D3
MOVE.W D4,CCR
LSL.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
ROR.L #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB23: ; SLA E
SWAP D3
MOVE.W D4,CCR
LSL.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
SWAP D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB24: ; SLA H
ROL.W #8,D2
MOVE.W D4,CCR
LSL.B #1,D2
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D2,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
ROL.W #8,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB25: ; SLA L
MOVE.W D4,CCR
LSL.B #1,D2
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D2,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB26: ; SLA (HL)
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
LSL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.B (A0,D1.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER (HL)
LSL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
LSL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB27: ; SLA A
MOVE.W D4,CCR
LSL.B #1,D0
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB28: ; SRA B
ROL.W #8,D3
MOVE.W D4,CCR
ASR.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
ROL.W #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB29: ; SRA C
MOVE.W D4,CCR
ASR.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB2A: ; SRA D
ROL.L #8,D3
MOVE.W D4,CCR
ASR.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
ROR.L #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB2B: ; SRA E
SWAP D3
MOVE.W D4,CCR
ASR.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
SWAP D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB2C: ; SRA H
ROL.W #8,D2
MOVE.W D4,CCR
ASR.B #1,D2
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D2,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
ROL.W #8,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB2D: ; SRA L
MOVE.W D4,CCR
ASR.B #1,D2
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D2,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB2E: ; SRA (HL)
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ASR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.B (A0,D1.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER (HL)
ASR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ASR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB2F: ; SRA A
MOVE.W D4,CCR
ASR.B #1,D0
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB38: ; SRL B
ROL.W #8,D3
MOVE.W D4,CCR
LSR.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
ROL.W #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB39: ; SRL C
MOVE.W D4,CCR
LSR.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB3A: ; SRL D
ROL.L #8,D3
MOVE.W D4,CCR
LSR.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
ROR.L #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB3B: ; SRL E
SWAP D3
MOVE.W D4,CCR
LSR.B #1,D3
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D3,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
SWAP D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB3C: ; SRL H
ROL.W #8,D2
MOVE.W D4,CCR
LSR.B #1,D2
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D2,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
ROL.W #8,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB3D: ; SRL L
MOVE.W D4,CCR
LSR.B #1,D2
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
MOVE.B D2,D6
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB3E: ; SRL (HL)
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
LSR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.B (A0,D1.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER (HL)
LSR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
LSR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB3F: ; SRL A
MOVE.W D4,CCR
LSR.B #1,D0
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D0
OR.B (A6,D0.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB40: ; BIT 0,B
MOVE.W D4,CCR
BTST #8,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB41: ; BIT 0,C
MOVE.W D4,CCR
BTST #0,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB42: ; BIT 0,D
MOVE.W D4,CCR
BTST #24,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB43: ; BIT 0,E
MOVE.W D4,CCR
BTST #16,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB44: ; BIT 0,H
MOVE.W D4,CCR
BTST #8,D2
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB45: ; BIT 0,L
MOVE.W D4,CCR
BTST #0,D2
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB46: ; BIT 0,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
MOVE.B (A0,D1.L),D7
MOVE.W D4,CCR
BTST #0,D7
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB47: ; BIT 0,A
MOVE.W D4,CCR
BTST #0,D0
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB48: ; BIT 1,B
MOVE.W D4,CCR
BTST #9,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB49: ; BIT 1,C
MOVE.W D4,CCR
BTST #1,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB4A: ; BIT 1,D
MOVE.W D4,CCR
BTST #25,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB4B: ; BIT 1,E
MOVE.W D4,CCR
BTST #17,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB4C: ; BIT 1,H
MOVE.W D4,CCR
BTST #9,D2
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB4D: ; BIT 1,L
MOVE.W D4,CCR
BTST #1,D2
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB4E: ; BIT 1,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
MOVE.B (A0,D1.L),D7
MOVE.W D4,CCR
BTST #1,D7
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB4F: ; BIT 1,A
MOVE.W D4,CCR
BTST #1,D0
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB50: ; BIT 2,B
MOVE.W D4,CCR
BTST #10,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB51: ; BIT 2,C
MOVE.W D4,CCR
BTST #2,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB52: ; BIT 2,D
MOVE.W D4,CCR
BTST #26,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB53: ; BIT 2,E
MOVE.W D4,CCR
BTST #18,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB54: ; BIT 2,H
MOVE.W D4,CCR
BTST #10,D2
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB55: ; BIT 2,L
MOVE.W D4,CCR
BTST #2,D2
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB56: ; BIT 2,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
MOVE.B (A0,D1.L),D7
MOVE.W D4,CCR
BTST #2,D7
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB57: ; BIT 2,A
MOVE.W D4,CCR
BTST #2,D0
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB58: ; BIT 3,B
MOVE.W D4,CCR
BTST #11,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB59: ; BIT 3,C
MOVE.W D4,CCR
BTST #3,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB5A: ; BIT 3,D
MOVE.W D4,CCR
BTST #27,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB5B: ; BIT 3,E
MOVE.W D4,CCR
BTST #19,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB5C: ; BIT 3,H
MOVE.W D4,CCR
BTST #11,D2
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB5D: ; BIT 3,L
MOVE.W D4,CCR
BTST #3,D2
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB5E: ; BIT 3,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
MOVE.B (A0,D1.L),D7
MOVE.W D4,CCR
BTST #3,D7
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB5F: ; BIT 3,A
MOVE.W D4,CCR
BTST #3,D0
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB60: ; BIT 4,B
MOVE.W D4,CCR
BTST #12,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB61: ; BIT 4,C
MOVE.W D4,CCR
BTST #4,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB62: ; BIT 4,D
MOVE.W D4,CCR
BTST #28,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB63: ; BIT 4,E
MOVE.W D4,CCR
BTST #20,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB64: ; BIT 4,H
MOVE.W D4,CCR
BTST #12,D2
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB65: ; BIT 4,L
MOVE.W D4,CCR
BTST #4,D2
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB66: ; BIT 4,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
MOVE.B (A0,D1.L),D7
MOVE.W D4,CCR
BTST #4,D7
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB67: ; BIT 4,A
MOVE.W D4,CCR
BTST #4,D0
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB68: ; BIT 5,B
MOVE.W D4,CCR
BTST #13,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB69: ; BIT 5,C
MOVE.W D4,CCR
BTST #5,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB6A: ; BIT 5,D
MOVE.W D4,CCR
BTST #29,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB6B: ; BIT 5,E
MOVE.W D4,CCR
BTST #21,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB6C: ; BIT 5,H
MOVE.W D4,CCR
BTST #13,D2
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB6D: ; BIT 5,L
MOVE.W D4,CCR
BTST #5,D2
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB6E: ; BIT 5,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
MOVE.B (A0,D1.L),D7
MOVE.W D4,CCR
BTST #5,D7
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB6F: ; BIT 5,A
MOVE.W D4,CCR
BTST #5,D0
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB70: ; BIT 6,B
MOVE.W D4,CCR
BTST #14,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB71: ; BIT 6,C
MOVE.W D4,CCR
BTST #6,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB72: ; BIT 6,D
MOVE.W D4,CCR
BTST #30,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB73: ; BIT 6,E
MOVE.W D4,CCR
BTST #22,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB74: ; BIT 6,H
MOVE.W D4,CCR
BTST #14,D2
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB75: ; BIT 6,L
MOVE.W D4,CCR
BTST #6,D2
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB76: ; BIT 6,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
MOVE.B (A0,D1.L),D7
MOVE.W D4,CCR
BTST #6,D7
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB77: ; BIT 6,A
MOVE.W D4,CCR
BTST #6,D0
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB78: ; BIT 7,B
MOVE.W D4,CCR
BTST #15,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB79: ; BIT 7,C
MOVE.W D4,CCR
BTST #7,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB7A: ; BIT 7,D
MOVE.W D4,CCR
BTST #31,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB7B: ; BIT 7,E
MOVE.W D4,CCR
BTST #23,D3
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB7C: ; BIT 7,H
MOVE.W D4,CCR
BTST #15,D2
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB7D: ; BIT 7,L
MOVE.W D4,CCR
BTST #7,D2
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB7E: ; BIT 7,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
MOVE.B (A0,D1.L),D7
MOVE.W D4,CCR
BTST #7,D7
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB7F: ; BIT 7,A
MOVE.W D4,CCR
BTST #7,D0
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB80: ; RES 0,B
BCLR #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB81: ; RES 0,C
BCLR #0,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB82: ; RES 0,D
BCLR #24,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB83: ; RES 0,E
BCLR #16,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB84: ; RES 0,H
BCLR #8,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB85: ; RES 0,L
BCLR #0,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB86: ; RES 0,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1
BCS.B .L1
BCLR #0,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BCLR #0,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB87: ; RES 0,A
BCLR #0,D0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB88: ; RES 1,B
BCLR #9,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB89: ; RES 1,C
BCLR #1,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB8A: ; RES 1,D
BCLR #25,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB8B: ; RES 1,E
BCLR #17,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB8C: ; RES 1,H
BCLR #9,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB8D: ; RES 1,L
BCLR #1,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB8E: ; RES 1,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1
BCS.B .L1
BCLR #1,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BCLR #1,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB8F: ; RES 1,A
BCLR #1,D0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB90: ; RES 2,B
BCLR #10,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB91: ; RES 2,C
BCLR #2,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB92: ; RES 2,D
BCLR #26,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB93: ; RES 2,E
BCLR #18,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB94: ; RES 2,H
BCLR #10,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB95: ; RES 2,L
BCLR #2,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB96: ; RES 2,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1
BCS.B .L1
BCLR #2,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BCLR #2,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB97: ; RES 2,A
BCLR #2,D0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB98: ; RES 3,B
BCLR #11,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB99: ; RES 3,C
BCLR #3,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB9A: ; RES 3,D
BCLR #27,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB9B: ; RES 3,E
BCLR #19,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB9C: ; RES 3,H
BCLR #11,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB9D: ; RES 3,L
BCLR #3,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB9E: ; RES 3,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1
BCS.B .L1
BCLR #3,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BCLR #3,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCB9F: ; RES 3,A
BCLR #3,D0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBA0: ; RES 4,B
BCLR #12,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBA1: ; RES 4,C
BCLR #4,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBA2: ; RES 4,D
BCLR #28,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBA3: ; RES 4,E
BCLR #20,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBA4: ; RES 4,H
BCLR #12,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBA5: ; RES 4,L
BCLR #4,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBA6: ; RES 4,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1
BCS.B .L1
BCLR #4,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BCLR #4,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBA7: ; RES 4,A
BCLR #4,D0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBA8: ; RES 5,B
BCLR #13,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBA9: ; RES 5,C
BCLR #5,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBAA: ; RES 5,D
BCLR #29,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBAB: ; RES 5,E
BCLR #21,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBAC: ; RES 5,H
BCLR #13,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBAD: ; RES 5,L
BCLR #5,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBAE: ; RES 5,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1
BCS.B .L1
BCLR #5,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BCLR #5,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBAF: ; RES 5,A
BCLR #5,D0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBB0: ; RES 6,B
BCLR #14,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBB1: ; RES 6,C
BCLR #6,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBB2: ; RES 6,D
BCLR #30,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBB3: ; RES 6,E
BCLR #22,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBB4: ; RES 6,H
BCLR #14,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBB5: ; RES 6,L
BCLR #6,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBB6: ; RES 6,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1
BCS.B .L1
BCLR #6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BCLR #6,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBB7: ; RES 6,A
BCLR #6,D0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBB8: ; RES 7,B
BCLR #15,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBB9: ; RES 7,C
BCLR #7,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBBA: ; RES 7,D
BCLR #31,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBBB: ; RES 7,E
BCLR #23,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBBC: ; RES 7,H
BCLR #15,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBBD: ; RES 7,L
BCLR #7,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBBE: ; RES 7,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1
BCS.B .L1
BCLR #7,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BCLR #7,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBBF: ; RES 7,A
BCLR #7,D0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBC0: ; SET 0,B
BSET #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBC1: ; SET 0,C
BSET #0,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBC2: ; SET 0,D
BSET #24,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBC3: ; SET 0,E
BSET #16,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBC4: ; SET 0,H
BSET #8,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBC5: ; SET 0,L
BSET #0,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBC6: ; SET 0,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1
BCS.B .L1
BSET #0,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BSET #0,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBC7: ; SET 0,A
BSET #0,D0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBC8: ; SET 1,B
BSET #9,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBC9: ; SET 1,C
BSET #1,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBCA: ; SET 1,D
BSET #25,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBCB: ; SET 1,E
BSET #17,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBCC: ; SET 1,H
BSET #9,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBCD: ; SET 1,L
BSET #1,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBCE: ; SET 1,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1
BCS.B .L1
BSET #1,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BSET #1,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBCF: ; SET 1,A
BSET #1,D0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBD0: ; SET 2,B
BSET #10,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBD1: ; SET 2,C
BSET #2,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBD2: ; SET 2,D
BSET #26,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBD3: ; SET 2,E
BSET #18,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBD4: ; SET 2,H
BSET #10,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBD5: ; SET 2,L
BSET #2,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBD6: ; SET 2,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1
BCS.B .L1
BSET #2,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BSET #2,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBD7: ; SET 2,A
BSET #2,D0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBD8: ; SET 3,B
BSET #11,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBD9: ; SET 3,C
BSET #3,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBDA: ; SET 3,D
BSET #27,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBDB: ; SET 3,E
BSET #19,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBDC: ; SET 3,H
BSET #11,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBDD: ; SET 3,L
BSET #3,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBDE: ; SET 3,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1
BCS.B .L1
BSET #3,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BSET #3,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBDF: ; SET 3,A
BSET #3,D0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBE0: ; SET 4,B
BSET #12,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBE1: ; SET 4,C
BSET #4,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBE2: ; SET 4,D
BSET #28,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBE3: ; SET 4,E
BSET #20,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBE4: ; SET 4,H
BSET #12,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBE5: ; SET 4,L
BSET #4,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBE6: ; SET 4,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1
BCS.B .L1
BSET #4,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BSET #4,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBE7: ; SET 4,A
BSET #4,D0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBE8: ; SET 5,B
BSET #13,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBE9: ; SET 5,C
BSET #5,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBEA: ; SET 5,D
BSET #29,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBEB: ; SET 5,E
BSET #21,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBEC: ; SET 5,H
BSET #13,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBED: ; SET 5,L
BSET #5,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBEE: ; SET 5,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1
BCS.B .L1
BSET #5,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BSET #5,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBEF: ; SET 5,A
BSET #5,D0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBF0: ; SET 6,B
BSET #14,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBF1: ; SET 6,C
BSET #6,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBF2: ; SET 6,D
BSET #30,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBF3: ; SET 6,E
BSET #22,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBF4: ; SET 6,H
BSET #14,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBF5: ; SET 6,L
BSET #6,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBF6: ; SET 6,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1
BCS.B .L1
BSET #6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BSET #6,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBF7: ; SET 6,A
BSET #6,D0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBF8: ; SET 7,B
BSET #15,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBF9: ; SET 7,C
BSET #7,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBFA: ; SET 7,D
BSET #31,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBFB: ; SET 7,E
BSET #23,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBFC: ; SET 7,H
BSET #15,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBFD: ; SET 7,L
BSET #7,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBFE: ; SET 7,(HL)
MOVEQ #0,D1
MOVE.W D2,D1
CMPI.W #$4000,D1
BCS.B .L1
BSET #7,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BSET #7,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MCBFF: ; SET 7,A
BSET #7,D0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
* DD INSTRUCTIONS
MDD09: ; ADD IX,BC
SUBA.L A0,A1
MOVE.L A1,D7
ADD.W D3,D7
SCS.W D6
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D6
OR.B D6,D4 ; SET X,C IF CARRY
MOVEQ #0,D5 ; SET H,N=0
MOVE.L A0,A1
ADDA.L D7,A1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD19: ; ADD IX,DE
SUBA.L A0,A1
MOVE.L A1,D7
SWAP D3
ADD.W D3,D7
SCS.W D6
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D6
OR.B D6,D4 ; SET X,C IF CARRY
MOVEQ #0,D5 ; SET H,N=0
SWAP D3
MOVE.L A0,A1
ADDA.L D7,A1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD21: ; LD IX,XXXX
MOVE.W (A2)+,D1
ROL.W #8,D1
MOVEQ #0,D7
MOVE.W D1,D7
MOVE.L A0,A1
ADDA.L D7,A1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD22: ; LD (XXXX),IX
MOVE.W (A2)+,D1
ROL.W #8,D1
MOVEQ #0,D7
MOVE.W D1,D7
SUBA.L A0,A1
MOVE.L A1,D6
ROL.W #8,D6
MOVE.W D6,(A0,D7.L)
ADDA.L A0,A1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD23: ; INC IX
SUBA.L A0,A1
MOVE.L A1,D7
ADDQ.W #1,D7
MOVE.L A0,A1
ADDA.L D7,A1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD29: ; ADD IX,IX
SUBA.L A0,A1
MOVE.L A1,D7
ADD.W D7,D7
SCS.W D6
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D6
OR.B D6,D4 ; SET X,C IF CARRY
MOVEQ #0,D5 ; SET H,N=0
MOVE.L A0,A1
ADDA.L D7,A1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD2A: ; LD IX,(XXXX)
MOVE.W (A2)+,D1
ROL.W #8,D1
MOVEQ #0,D7
MOVE.W D1,D7
MOVE.W (A0,D7.L),D7
ROL.W #8,D7
MOVE.L A0,A1
ADDA.L D7,A1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD2B: ; DEC IX
SUBA.L A0,A1
MOVE.L A1,D7
SUBQ.W #1,D7
MOVE.L A0,A1
ADDA.L D7,A1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD34: ; INC (IX+D)
MOVE.W D4,-(SP) ; SAVE X,C AS NOT AFFECTED
SUBA.L A0,A1
MOVE.L A1,D1 ; CONVENIENTLY MASK D1.L WITH 0000FFFF
MOVE.B (A2)+,D7
EXT.W D7
ADD.W D7,D1
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
ADDA.L A0,A1
MOVE.B (A1,D7.L),D6
MOVE.W D4,CCR
ADDQ.B #1,D6
MOVE.W CCR,D4
MOVE.W (SP)+,D1 ; GET OLD FLAGS
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D1
OR.B D1,D4 ; SET X,C IF PREVIUOSLY SET
MOVE.B D6,(A1,D7.L)
ANDI.W #$00FF,D6 ; EXT D6 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
ADDA.L A0,A1
MOVE.B (A1,D7.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER
MOVE.W D4,CCR ; ANY MEMORY
ADDQ.B #1,D6
MOVE.W CCR,D4
MOVE.W (SP)+,D1 ; GET OLD FLAGS
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D1
OR.B D1,D4 ; SET X,C IF PREVIUOSLY SET
ANDI.W #$00FF,D6 ; EXT D7 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
ADDA.L A0,A1
MOVE.B (A1,D7.L),D6
MOVE.W D4,CCR
ADDQ.B #1,D6
MOVE.W CCR,D4
MOVE.B D6,(A1,D7.L)
ANDI.W #$00FF,D6 ; EXT D7 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
MOVE.W (SP)+,D1 ; GET OLD FLAGS
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D1
OR.B D1,D4 ; SET X,C IF PREVIUOSLY SET
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD35: ; DEC (IX+D)
MOVE.W D4,-(SP) ; SAVE X,C AS NOT AFFECTED
SUBA.L A0,A1
MOVE.L A1,D1 ; CONVENIENTLY MASK D1.L WITH 0000FFFF
MOVE.B (A2)+,D7
EXT.W D7
ADD.W D7,D1
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
ADDA.L A0,A1
MOVE.B (A1,D7.L),D6
MOVE.W D4,CCR
SUBQ.B #1,D6
MOVE.W CCR,D4
MOVE.W (SP)+,D1 ; GET OLD FLAGS
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D1
OR.B D1,D4 ; SET X,C IF PREVIUOSLY SET
MOVE.B D6,(A1,D7.L)
ANDI.W #$00FF,D6 ; EXT D6 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
ADDA.L A0,A1
MOVE.B (A1,D7.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER
MOVE.W D4,CCR ; ANY MEMORY
SUBQ.B #1,D6
MOVE.W CCR,D4
MOVE.W (SP)+,D1 ; GET OLD FLAGS
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D1
OR.B D1,D4 ; SET X,C IF PREVIUOSLY SET
ANDI.W #$00FF,D6 ; EXT D7 FOR INDEX INTO SUB TABLE
MOVE.B $220(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
ADDA.L A0,A1
MOVE.B (A1,D7.L),D6
MOVE.W D4,CCR
SUBQ.B #1,D6
MOVE.W CCR,D4
MOVE.B D6,(A1,D7.L)
ANDI.W #$00FF,D6 ; EXT D7 FOR INDEX INTO SUB TABLE
MOVE.B $220(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
MOVE.W (SP)+,D1 ; GET OLD FLAGS
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D1
OR.B D1,D4 ; SET X,C IF PREVIUOSLY SET
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD36: ; LD (IX+D),N
SUBA.L A0,A1
MOVE.L A1,D1 ; CONVENIENTLY MASK D1.L WITH 0000FFFF
MOVE.B (A2)+,D7
EXT.W D7
ADD.W D7,D1
CMPI.W #$4000,D1 ; if (IX+D) >= 4000 do the instruction
BCS.B .L1
MOVE.B (A2)+,D1
ADDA.L A0,A1
MOVE.B D1,(A1,D7.W)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if (IX+D) < 3C00 we are in ROM so do nothing
BHI.B .L2
ADDA.L A0,A1
ADDQ.L #1,A2 ; will catch (IX+d)>FFFF aswell
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B (A2)+,D6
ADDA.L A0,A1
MOVE.B D6,(A1,D7.W) ; (IX+D) is pointing at the screen so update the
BSR _screenwrite ; screen with N
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD39: ; ADD IX,SP
SUBA.L A0,A4
MOVE.L A4,D7
SUBA.L A0,A1
MOVE.L A1,D6
ADD.W D7,D6
SCS.B D7
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D7
OR.B D7,D4 ; SET X,C IF CARRY
MOVEQ #0,D5 ; SET H,N=0
ADDA.L A0,A4
MOVE.L D6,A1
ADDA.L A0,A1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD46: ; LD B,(IX+D)
MOVE.B (A2)+,D1
EXT.W D1
ROL.W #8,D3
MOVE.B (A1,D1.W),D3
ROL.W #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD4E: ; LD C,(IX+D)
MOVE.B (A2)+,D1
EXT.W D1
MOVE.B (A1,D1.W),D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD56: ; LD D,(IX+D)
MOVE.B (A2)+,D1
EXT.W D1
ROL.L #8,D3
MOVE.B (A1,D1.W),D3
ROR.L #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD5E: ; LD E,(IX+D)
MOVE.B (A2)+,D1
EXT.W D1
SWAP D3
MOVE.B (A1,D1.W),D0
SWAP D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD66: ; LD H,(IX+D)
MOVE.B (A2)+,D1
EXT.W D1
ROL.W #8,D2
MOVE.B (A1,D1.W),D2
ROL.W #8,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD6E: ; LD L,(IX+D)
MOVE.B (A2)+,D1
EXT.W D1
MOVE.B (A1,D1.W),D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD70: ; LD (IX+D),B
SUBA.L A0,A1
MOVE.L A1,D1
MOVE.B (A2)+,D7
EXT.W D7
ADD.W D7,D1
CMPI.W #$4000,D1
BCS.B .L1
ADDA.L A0,A1
ROL.W #8,D3
MOVE.B D3,(A1,D7.W)
ROL.W #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
ADDA.L A0,A1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.W D3,D6
ADDA.L A0,A1
ROL.W #8,D6
MOVE.B D6,(A1,D7.W)
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD71: ; LD (IX+D),C
SUBA.L A0,A1
MOVE.L A1,D1
MOVE.B (A2)+,D7
EXT.W D7
ADD.W D7,D1
CMPI.W #$4000,D1
BCS.B .L1
ADDA.L A0,A1
MOVE.B D3,(A1,D7.W)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
ADDA.L A0,A1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B D3,D6
ADDA.L A0,A1
MOVE.B D6,(A1,D7.W)
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD72: ; LD (IX+D),D
SUBA.L A0,A1
MOVE.L A1,D1
MOVE.B (A2)+,D7
EXT.W D7
ADD.W D7,D1
CMPI.W #$4000,D1
BCS.B .L1
ADDA.L A0,A1
ROL.L #8,D3
MOVE.B D3,(A1,D7.W)
ROR.L #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
ADDA.L A0,A1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.L D3,D6
ADDA.L A0,A1
ROL.L #8,D6
MOVE.B D6,(A1,D7.W)
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD73: ; LD (IX+D),E
SUBA.L A0,A1
MOVE.L A1,D1
MOVE.B (A2)+,D7
EXT.W D7
ADD.W D7,D1
CMPI.W #$4000,D1
BCS.B .L1
ADDA.L A0,A1
SWAP D3
MOVE.B D3,(A1,D7.W)
SWAP D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
ADDA.L A0,A1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.L D3,D6
ADDA.L A0,A1
SWAP D6
MOVE.B D6,(A1,D7.W)
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD74: ; LD (IX+D),H
SUBA.L A0,A1
MOVE.L A1,D1
MOVE.B (A2)+,D7
EXT.W D7
ADD.W D7,D1
CMPI.W #$4000,D1
BCS.B .L1
ADDA.L A0,A1
ROL.W #8,D2
MOVE.B D2,(A1,D7.W)
ROL.W #8,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
ADDA.L A0,A1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.W D2,D6
ADDA.L A0,A1
ROL.W #8,D6
MOVE.B D6,(A1,D7.W)
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD75: ; LD (IX+D),L
SUBA.L A0,A1
MOVE.L A1,D1
MOVE.B (A2)+,D7
EXT.W D7
ADD.W D7,D1
CMPI.W #$4000,D1
BCS.B .L1
ADDA.L A0,A1
MOVE.B D2,(A1,D7.W)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
ADDA.L A0,A1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B D2,D6
ADDA.L A0,A1
MOVE.B D6,(A1,D7.W)
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD77: ; LD (IX+D),A
SUBA.L A0,A1
MOVE.L A1,D1
MOVE.B (A2)+,D7
EXT.W D7
ADD.W D7,D1
CMPI.W #$4000,D1
BCS.B .L1
ADDA.L A0,A1
MOVE.B D0,(A1,D7.W)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
ADDA.L A0,A1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B D0,D6
ADDA.L A0,A1
MOVE.B D6,(A1,D7.W)
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD7E: ; LD A,(IX+D)
MOVE.B (A2)+,D1
EXT.W D1
MOVE.B (A1,D1.W),D0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD86: ; ADD A,(IX+D)
MOVE.B (A2)+,D1
EXT.W D1
MOVE.W D4,CCR
ADD.B (A1,D1.W),D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD8E: ; ADC A,(IX+D)
MOVE.B (A2)+,D1
EXT.W D1
MOVE.B (A1,D1.W),D7
MOVE.W D4,CCR
ADDX.B D7,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD96: ; SUB (IX+D)
MOVE.B (A2)+,D1
EXT.W D1
MOVE.W D4,CCR
SUB.B (A1,D1.W),D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDD9E: ; SBC A,(IX+D)
MOVE.B (A2)+,D1
EXT.W D1
MOVE.B (A1,D1.W),D7
MOVE.W D4,CCR
SUBX.B D7,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDDA6: ; AND (IX+D)
MOVE.B (A2)+,D1
EXT.W D1
MOVE.W D4,CCR
AND.B (A1,D1.W),D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO PARITY TABLE
OR.B (A6,D0.W),D4 ; SET V FLG TO PARITY TABLE VALUE
ANDI.W #$EE,D4 ; CLEAR C AND X
MOVE.B #$10,D5 ; SET EXTENDED Z80 FLG TO N=0 H=1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDDAE: ; XOR (IX+D)
MOVE.B (A2)+,D1
EXT.W D1
MOVE.B (A1,D1.W),D7
MOVE.W D4,CCR
EOR.B D7,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO PARITY TABLE
OR.B (A6,D0.W),D4 ; SET V FLG TO PARITY TABLE VALUE
ANDI.W #$EE,D4 ; CLEAR C AND X
MOVE.B #$10,D5 ; SET EXTENDED Z80 FLG TO N=0 H=1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDDB6: ; OR (IX+D)
MOVE.B (A2)+,D1
EXT.W D1
MOVE.W D4,CCR
OR.B (A1,D1.W),D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO PARITY TABLE
OR.B (A6,D0.W),D4 ; SET V FLG TO PARITY TABLE VALUE
ANDI.W #$EE,D4 ; CLEAR C AND X
MOVE.B #$10,D5 ; SET EXTENDED Z80 FLG TO N=0 H=1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDDBE: ; CP (IX+D)
MOVE.B D0,D6
MOVE.B (A2)+,D1
EXT.W D1
MOVE.W D4,CCR
SUB.B (A1,D1.W),D6
MOVE.W CCR,D4
ANDI.W #$00FF,D6 ; EXT D6 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDDCB: ; various (IX+d) instructions DD CB d X
SUBA.L A0,A1 ; get real IX val
MOVE.L A1,D1
ADDA.L A0,A1
MOVE.B (A2)+,D7 ; get d offset
EXT.W D7 ; sign extend
ADD.W D7,D1 ; D1 now has (IX+d) for later use by screenwrite()
MOVE.B (A2)+,D7 ; get X to decide function to perform
CMPI.B #6,D7
BEQ.W DDRLC
CMPI.B #14,D7
BEQ.W DDRRC
CMPI.B #$16,D7
BEQ.W DDRL
CMPI.B #$1E,D7
BEQ.W DDRR
CMPI.B #$26,D7
BEQ.W DDSLA
CMPI.B #$2E,D7
BEQ.W DDSRA
CMPI.B #$3E,D7
BEQ.W DDSRL
CMPI.B #$46,D7
BEQ.W DDBT0
CMPI.B #$4E,D7
BEQ.W DDBT1
CMPI.B #$56,D7
BEQ.W DDBT2
CMPI.B #$5E,D7
BEQ.W DDBT3
CMPI.B #$66,D7
BEQ.W DDBT4
CMPI.B #$6E,D7
BEQ.W DDBT5
CMPI.B #$76,D7
BEQ.W DDBT6
CMPI.B #$7E,D7
BEQ.W DDBT7
CMPI.B #$86,D7
BEQ.W DDRS0
CMPI.B #$8E,D7
BEQ.W DDRS1
CMPI.B #$96,D7
BEQ.W DDRS2
CMPI.B #$9E,D7
BEQ.W DDRS3
CMPI.B #$A6,D7
BEQ.W DDRS4
CMPI.B #$AE,D7
BEQ.W DDRS5
CMPI.B #$B6,D7
BEQ.W DDRS6
CMPI.B #$BE,D7
BEQ.W DDRS7
CMPI.B #$C6,D7
BEQ.W DDST0
CMPI.B #$CE,D7
BEQ.W DDST1
CMPI.B #$D6,D7
BEQ.W DDST2
CMPI.B #$DE,D7
BEQ.W DDST3
CMPI.B #$E6,D7
BEQ.W DDST4
CMPI.B #$EE,D7
BEQ.W DDST5
CMPI.B #$F6,D7
BEQ.W DDST6
CMPI.B #$FE,D7
BEQ.W DDST7
BRA ILLEGAL ; ILLEGAL IF NO MATCH IN TABLE
DDRLC: ; RLC (IX+D)
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ROL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.B (A0,D1.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER (HL)
ROL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ROL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDRRC: ; RRC (IX+D)
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ROR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.B (A0,D1.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER (HL)
ROR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ROR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDRL: ; RL (IX+D)
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ROXL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.B (A0,D1.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER (HL)
ROXL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ROXL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDRR: ; RR (IX+D)
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ROXR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.B (A0,D1.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER (HL)
ROXR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ROXR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDSLA: ; SLA (IX+D)
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
LSL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.B (A0,D1.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER (HL)
LSL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
LSL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDSRA: ; SRA (IX+D)
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ASR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.B (A0,D1.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER (HL)
ASR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ASR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDSRL: ; SRL (IX+D)
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
LSR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.B (A0,D1.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER (HL)
LSR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
LSR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDBT0: MOVE.B (A0,D1.L),D7 ; BTST 0 IXD
MOVE.W D4,CCR
BTST #0,D7
MOVE.W CCR,D4
MOVEQ #$10,D5 ; SET H=1,N=0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDBT1: MOVE.B (A0,D1.L),D7
MOVE.W D4,CCR
BTST #1,D7
MOVE.W CCR,D4
MOVEQ #$10,D5 ; SET H=1,N=0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDBT2: MOVE.B (A0,D1.L),D7
MOVE.W D4,CCR
BTST #2,D7
MOVE.W CCR,D4
MOVEQ #$10,D5 ; SET H=1,N=0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDBT3: MOVE.B (A0,D1.L),D7
MOVE.W D4,CCR
BTST #3,D7
MOVE.W CCR,D4
MOVEQ #$10,D5 ; SET H=1,N=0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDBT4: MOVE.B (A0,D1.L),D7
MOVE.W D4,CCR
BTST #4,D7
MOVE.W CCR,D4
MOVEQ #$10,D5 ; SET H=1,N=0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDBT5: MOVE.B (A0,D1.L),D7
MOVE.W D4,CCR
BTST #5,D7
MOVE.W CCR,D4
MOVEQ #$10,D5 ; SET H=1,N=0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDBT6: MOVE.B (A0,D1.L),D7
MOVE.W D4,CCR
BTST #6,D7
MOVE.W CCR,D4
MOVEQ #$10,D5 ; SET H=1,N=0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDBT7: MOVE.B (A0,D1.L),D7
MOVE.W D4,CCR
BTST #7,D7
MOVE.W CCR,D4
MOVEQ #$10,D5 ; SET H=1,N=0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDRS0: CMPI.W #$4000,D1 ; RES 0 IXD
BCS.B .L1
BCLR #0,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BCLR #0,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDRS1: CMPI.W #$4000,D1
BCS.B .L1
BCLR #1,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BCLR #1,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDRS2: CMPI.W #$4000,D1
BCS.B .L1
BCLR #2,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BCLR #2,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDRS3: CMPI.W #$4000,D1
BCS.B .L1
BCLR #3,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BCLR #3,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDRS4: CMPI.W #$4000,D1
BCS.B .L1
BCLR #4,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BCLR #4,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDRS5: CMPI.W #$4000,D1
BCS.B .L1
BCLR #5,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BCLR #5,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDRS6: CMPI.W #$4000,D1
BCS.B .L1
BCLR #6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BCLR #6,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDRS7: CMPI.W #$4000,D1
BCS.B .L1
BCLR #7,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BCLR #7,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDST0: CMPI.W #$4000,D1 ; SET 0 IXD (D1 HOLDS IX+D)
BCS.B .L1
BSET #0,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BSET #0,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDST1: CMPI.W #$4000,D1 ; SET 1 IXD
BCS.B .L1
BSET #1,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BSET #1,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDST2: CMPI.W #$4000,D1 ; SET 2 IXD
BCS.B .L1
BSET #2,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BSET #2,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDST3: CMPI.W #$4000,D1 ; SET 3 IXD
BCS.B .L1
BSET #3,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BSET #3,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDST4: CMPI.W #$4000,D1
BCS.B .L1
BSET #4,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BSET #4,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDST5: CMPI.W #$4000,D1
BCS.B .L1
BSET #5,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BSET #5,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDST6: CMPI.W #$4000,D1
BCS.B .L1
BSET #6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BSET #6,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
DDST7: CMPI.W #$4000,D1
BCS.B .L1
BSET #7,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BSET #7,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDDE1: ; POP IX
MOVEQ #0,D7
MOVE.W (A4)+,D7
ROL.W #8,D7
MOVE.L D7,A1
ADDA.L A0,A1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDDE3: ; EX (SP),IX
SUBA.L A0,A1
MOVE.L A1,D7
MOVE.W (A4),D6
ROL.W #8,D6
MOVE.W D6,A1
ADDA.L A0,A1
ROL.W #8,D7
MOVE.W D7,(A4)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDDE5: ; PUSH IX
MOVE.L A1,D6
SUB.L A0,D6
ROL.W #8,D6
MOVE.W D6,-(A4)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDDE9: ; JP (IX)
MOVE.L A1,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MDDF9: ; LD SP,IX
MOVE.L A1,A4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
* ED INSTRUCTIONS
MED01: MOVEQ #0,D7
MOVE.W _CASSPTR,D7
MOVE.B D0,($10000,A0,D7.L)
ADDQ.W #1,D7
MOVE.W D7,_CASSPTR
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED02: MOVEQ #0,D7
MOVE.W _CASSPTR,D7
MOVE.B ($10000,A0,D7.L),D0
ADDQ.W #1,D7
MOVE.W D7,_CASSPTR
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED03: MOVEQ #0,D7
MOVE.W D7,_CASSPTR
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED40: ; IN B,(C) (NOP)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED41: ; OUT (C),B (NOP)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED42: ; SBC HL,BC
ORI.B #4,D4
MOVE.W D4,CCR
SUBX.W D3,D2
MOVE.W CCR,D4
MOVEQ #2,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED43: ; LD (XXXX),BC
MOVE.W (A2)+,D1
ROL.W #8,D1
MOVEQ #0,D7
MOVE.W D1,D7
ROL.W #8,D3
MOVE.W D3,(A0,D7.L)
ROL.W #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED44: ; NEG (NEGATE A) *******************
MOVE.W D4,CCR
NEG.B D0
MOVE.W CCR,D4
MOVEQ #02,D5 ; H=0,N=1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED45:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED46:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED47:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED48:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED49:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED4A: ; ADC HL,BC
MOVE.W D4,CCR
ADDX.W D3,D2
MOVE.W CCR,D4
MOVEQ #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED4B: ; LD BC,(XXXX)
MOVE.W (A2)+,D1
ROL.W #8,D1
MOVEQ #0,D7
MOVE.W D1,D7
MOVE.W (A0,D7.L),D3
ROL.W #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED4D:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED4F: ; LD R,A (NOP)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED50:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED51:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED52: ; SBC HL,DE
ORI.B #4,D4
SWAP D3
MOVE.W D4,CCR
SUBX.W D3,D2
MOVE.W CCR,D4
MOVEQ #2,D5
SWAP D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED53: ; LD (XXXX),DE
MOVE.W (A2)+,D1
ROL.W #8,D1
MOVEQ #0,D7
MOVE.W D1,D7
SWAP D3
ROL.W #8,D3
MOVE.W D3,(A0,D7.L)
ROL.W #8,D3
SWAP D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED56:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED57:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED58:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED59:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED5A: SWAP D3 ; ADC HL,DE
MOVE.W D4,CCR
ADDX.W D3,D2
MOVE.W CCR,D4
SWAP D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED5B: ; LD DE,(XXXX)
MOVE.W (A2)+,D1
ROL.W #8,D1
MOVEQ #0,D7
MOVE.W D1,D7
SWAP D3
MOVE.W (A0,D7.L),D3
ROL.W #8,D3
SWAP D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED5E:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED5F: ; LD A,R
MOVE.B $BFE801,D0 ; GET RANDOM BYTE FROM SYSTEM TIMER
MOVE.W D4,CCR ; CONDITION S,Z FLAGS BY AN OR INSTRUCTION
OR.B D0,D0
ANDI #$0F,CCR ; CLEAR 680X0 X FLG (V,C ARE CLEARED BY THE OR)
MOVE.W CCR,D4
MOVEQ.B #0,D5 ; H=N=0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED60:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED61:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED62: ; SBC HL,HL
ORI.B #4,D4
MOVE.W D4,CCR
SUBX.W D2,D2
MOVE.W CCR,D4
MOVEQ #2,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED67: ; RRD ****** NO FLAGS SET ********
MOVEQ #0,D1
MOVEQ #0,D6
MOVEQ #0,D7
MOVE.B D0,D6
LSL.B #4,D6 ; LOW NIBBLE OF D0-> HIGH NIB OF D6
MOVE.W D2,D1 ; HL-> D1
MOVE.B (A0,D1.L),D7 ; GET BYTE AT (HL)
ROR.L #4,D7
OR.B D7,D6 ; D6 NOW HAS BYTE READY FOR SCREENWRITE()
ROL.L #4,D7
ANDI.B #$0F,D7
ANDI.B #$F0,D0
OR.B D7,D0
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B D6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B D6,(A0,D1.L) ; HL is pointing at the screen so update the
BSR _screenwrite ; screen with D6
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED68:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED69:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED6A: ; ADC HL,HL
MOVE.W D4,CCR
ADDX.W D2,D2
MOVE.W CCR,D4
MOVEQ #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED6F: ; RLD ****** NO FLAGS SET ********
MOVEQ #0,D1
MOVEQ #0,D6
MOVEQ #0,D7
MOVE.W D2,D1 ; HL-> D1
MOVE.B D0,D6
ANDI.B #$0F,D6 ; LOW NIBBLE OF D0 IN D6
MOVE.B (A0,D1.L),D7 ; GET BYTE AT (HL)
LSL.W #4,D7
OR.B D7,D6 ; D6 NOW HAS BYTE READY FOR SCREENWRITE()
ANDI.B #$F0,D0
ROL.W #8,D7 ; HIGH NIBBLE OF (HL) BACK TO LOW NIBBLE OF D7
OR.B D7,D0 ; FINISHED!
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B D6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B D6,(A0,D1.L) ; HL is pointing at the screen so update the
BSR _screenwrite ; screen with D6
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED72: ; SBC HL,SP
MOVE.L A4,D6
SUB.L A0,D6
ORI.B #4,D4
MOVE.W D4,CCR
SUBX.W D6,D2
MOVE.W CCR,D4
MOVEQ #2,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED73: ; LD (XXXX),SP
MOVE.W (A2)+,D1
ROL.W #8,D1
MOVEQ #0,D7
MOVE.W D1,D7
MOVE.L A4,D6
SUB.L A0,D6
ROL.W #8,D6
MOVE.W D6,(A0,D7.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED78:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED79:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED7A: ; ADC HL,SP
MOVE.L A4,D6
SUB.L A0,D6
MOVE.W D4,CCR
ADDX.W D6,D2
MOVE.W CCR,D4
MOVEQ #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MED7B: ; LD SP,(XXXX)
MOVE.W (A2)+,D1
ROL.W #8,D1
MOVEQ #0,D7
MOVE.W D1,D7
MOVE.W (A0,D7.L),D7
ROL.W #8,D7
MOVE.L A0,A4
ADDA.L D7,A4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MEDA0: ; LDI
ORI.B #$02,D4 ; V=1
SWAP D3
MOVEQ #0,D7
MOVE.W D3,D7
.HERE: CMPI.W #$4000,D3 ; if BC >= 4000 do the instruction
BCS.B .L1
.L3 MOVE.B (A0,D2.L),(A0,D7.L)
.L2 ADDQ.W #1,D2
ADDQ.W #1,D3
SWAP D3
SUBQ.W #1,D3
BNE.S .L4
ANDI.B #$1D,D4 ; V FLG = 0 IF BC=0
.L4 MOVEQ #$0,D5 ; SET H,N=0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3C00,D3 ; if BC < 3C00 we are in ROM so do nothing
BCS.B .L2
MOVE.W D3,D1
MOVE.B (A0,D2.L),D6 ; BC is pointing at the screen so update the
BSR _screenwrite ; screen with A
BRA.B .L3
MEDA1: ; CPI
MOVE.B D4,D7
ANDI.B #$11,D7 ; SAVE X,C
MOVE.B D0,D6
MOVEQ #0,D1
MOVE.W D2,D1
SUB.B (A0,D1.L),D6 ; DO
MOVE.W CCR,D4
ANDI.B #$0E,D4 ; X,C=0
ORI.B #$02,D4 ; V=1
OR.B D7,D4 ; RESTORE OLD X,C
ADDQ.W #1,D2
SUBQ.W #1,D3
BNE.S .L4
ANDI.B #$1D,D7 ; V FLG = 0 IF BC=0
.L4 MOVEQ #$2,D5 ; SET N=1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MEDA2:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MEDA3:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MEDA8: ; LDD
ORI.B #$02,D4 ; V=1
SWAP D3
MOVEQ #0,D7
MOVE.W D3,D7
.HERE: CMPI.W #$4000,D3 ; if DE >= 4000 do the instruction
BCS.B .L1
.L3 MOVE.B (A0,D2.L),(A0,D7.L)
.L2 SUBQ.W #1,D2
SUBQ.W #1,D3
SWAP D3
SUBQ.W #1,D3 ; DEC BC
BNE.S .L4
ANDI.B #$1D,D4 ; V FLG = 0 IF BC=0
.L4 MOVEQ #$0,D5 ; SET H,N=0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3C00,D3 ; if DE < 3C00 we are in ROM so do nothing
BCS.B .L2
MOVE.W D3,D1
MOVE.B (A0,D2.L),D6 ; BC is pointing at the screen so update the
BSR _screenwrite ; screen with A
BRA.B .L3
MEDA9: ; CPD
MOVE.B D4,D7
ANDI.B #$11,D7 ; SAVE X,C
MOVE.B D0,D6
MOVEQ #0,D1
MOVE.W D2,D1
SUB.B (A0,D1.L),D6 ; DO
MOVE.W CCR,D4
ANDI.B #$0E,D4 ; X,C=0
ORI.B #$02,D4 ; V=1
OR.B D7,D4 ; RESTORE OLD X,C
SUBQ.W #1,D2
SUBQ.W #1,D3
BNE.S .L4
ANDI.B #$1D,D4 ; V FLG = 0 IF BC=0
.L4 MOVEQ #$2,D5 ; SET N=1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MEDAA:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MEDAB:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MEDB0: ; LDIR
MOVE.L D3,D7
MOVEQ #0,D1
SWAP D7
MOVE.W D7,D1
ANDI.W #$FFFF,D2
SUBQ.W #1,D3
.HERE: CMPI.W #$4000,D1 ; if BC >= 4000 do the instruction
BCS.B .L1
.L3 MOVE.B (A0,D2.L),(A0,D1.L)
.L2 ADDQ.W #1,D2
ADDQ.W #1,D1
DBRA D3,.HERE
MOVEQ.W #0,D3
SWAP D3
MOVE.W D1,D3
SWAP D3
MOVEQ.L #0,D5 ; CLEAR H,N FLAGS
ANDI.B #$1D,D4 ; CLEAR V FLAG
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3C00,D1 ; if BC < 3C00 we are in ROM so do nothing
BCS.B .L2
MOVE.B (A0,D2.L),D6 ; BC is pointing at the screen so update the
BSR _screenwrite ; screen with A
BRA.B .L3
MEDB1: ; CPIR
MOVE.B D4,D7
ANDI.B #$11,D7 ; SAVE X,C
MOVEQ #0,D1
.L3 MOVE.B D0,D6
MOVE.W D2,D1
SUB.B (A0,D1.L),D6 ; DO
MOVE.W CCR,D4
BEQ.B .L1
ANDI.B #$0C,D4 ; X,C,V=0
OR.B D7,D4 ; RESTORE OLD X,C
ADDQ.W #1,D2
SUBQ.W #1,D3
BNE.B .L3
ANDI.B #$1D,D4 ; V FLG = 0 SINCE BC=0
MOVEQ #$2,D5 ; SET N=1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
ANDI.B #$0E,D4 ; X,C=0
ORI.B #$02,D4 ; V=1
OR.B D7,D4 ; RESTORE OLD X,C
ADDQ.W #1,D2
SUBQ.W #1,D3
BNE.S .L4
ANDI.B #$1D,D4 ; V FLG = 0 IF BC=0
.L4 MOVEQ #$2,D5 ; SET SUB FLG
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MEDB2:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MEDB3:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MEDB8: ; LDDR
MOVE.L D3,D7
MOVEQ #0,D1
SWAP D7
MOVE.W D7,D1
ANDI.W #$FFFF,D2
SUBQ.W #1,D3
.HERE: CMPI.W #$4000,D1 ; if BC >= 4000 do the instruction
BCS.B .L1
.L3 MOVE.B (A0,D2.L),(A0,D1.L)
.L2 SUBQ.W #1,D2
SUBQ.W #1,D1
DBRA D3,.HERE
MOVEQ.W #0,D3
SWAP D3
MOVE.W D1,D3
SWAP D3
MOVEQ.L #0,D5 ; CLEAR H,N FLAGS
ANDI.B #$1D,D4 ; CLEAR V FLAG
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3C00,D1 ; if BC <= 3C00 we are in ROM so do nothing
BCS.B .L2
MOVE.B (A0,D2.L),D6 ; BC is pointing at the screen so update the
BSR _screenwrite ; screen with A
BRA.B .L3
MEDB9: ; CPDR
MOVE.B D4,D7
ANDI.B #$11,D7 ; SAVE X,C
MOVEQ #0,D1
.L3 MOVE.B D0,D6
MOVE.W D2,D1
SUB.B (A0,D1.L),D6 ; DO
MOVE.W CCR,D4
BEQ.B .L1
ANDI.B #$0C,D4 ; X,C,V=0
OR.B D7,D4 ; RESTORE OLD X,C
SUBQ.W #1,D2
SUBQ.W #1,D3
BNE.B .L3
ANDI.B #$1D,D4 ; V FLG = 0 SINCE BC=0
MOVEQ #$2,D5 ; SET N=1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
ANDI.B #$0E,D4 ; X,C=0
ORI.B #$02,D4 ; V=1
OR.B D7,D4 ; RESTORE OLD X,C
SUBQ.W #1,D2
SUBQ.W #1,D3
BNE.S .L4
ANDI.B #$1D,D4 ; V FLG = 0 IF BC=0
.L4 MOVEQ #$2,D5 ; SET SUB FLG
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MEDBA:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MEDBB:
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
* FD INSTRUCTIONS
MFD09: ; ADD IY,BC
SUBA.L A0,A5
MOVE.L A5,D7
ADD.W D3,D7
SCS.W D6
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D6
OR.B D6,D4 ; SET X,C IF CARRY
MOVEQ #0,D5 ; SET H,N=0
MOVE.L A0,A5
ADDA.L D7,A5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD19: ; ADD IY,DE
SUBA.L A0,A5
MOVE.L A5,D7
SWAP D3
ADD.W D3,D7
SCS.W D6
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D6
OR.B D6,D4 ; SET X,C IF CARRY
MOVEQ #0,D5 ; SET H,N=0
SWAP D3
MOVE.L A0,A5
ADDA.L D7,A5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD21: ; LD IY,XXXX
MOVE.W (A2)+,D1
ROL.W #8,D1
MOVEQ #0,D7
MOVE.W D1,D7
MOVE.L A0,A5
ADDA.L D7,A5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD22: ; LD (XXXX),IY
MOVE.W (A2)+,D1
ROL.W #8,D1
MOVEQ #0,D7
MOVE.W D1,D7
SUBA.L A0,A5
MOVE.L A5,D6
ROL.W #8,D6
MOVE.W D6,(A0,D7.L)
ADDA.L A0,A5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD23: ; INC IY
SUBA.L A0,A5
MOVE.L A5,D7
ADDQ.W #1,D7
MOVE.L A0,A5
ADDA.L D7,A5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD29: ; ADD IY,IY
SUBA.L A0,A5
MOVE.L A5,D7
ADD.W D7,D7
SCS.W D6
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D6
OR.B D6,D4 ; SET X,C IF CARRY
MOVEQ #0,D5 ; SET H,N=0
MOVE.L A0,A5
ADDA.L D7,A5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD2A: ; LD IY,(XXXX)
MOVE.W (A2)+,D1
ROL.W #8,D1
MOVEQ #0,D7
MOVE.W D1,D7
MOVE.W (A0,D7.L),D7
ROL.W #8,D7
MOVE.L A0,A5
ADDA.L D7,A5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD2B: ; DEC IY
SUBA.L A0,A5
MOVE.L A5,D7
SUBQ.W #1,D7
MOVE.L A0,A5
ADDA.L D7,A5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD34: ; INC (IY+D)
MOVE.W D4,-(SP) ; SAVE X,C AS NOT AFFECTED
SUBA.L A0,A5
MOVE.L A5,D1 ; CONVENIENTLY MASK D1.L WITH 0000FFFF
MOVE.B (A2)+,D7
EXT.W D7
ADD.W D7,D1
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
ADDA.L A0,A5
MOVE.B (A5,D7.L),D6
MOVE.W D4,CCR
ADDQ.B #1,D6
MOVE.W CCR,D4
MOVE.W (SP)+,D1 ; GET OLD FLAGS
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D1
OR.B D1,D4 ; SET X,C IF PREVIUOSLY SET
MOVE.B D6,(A5,D7.L)
ANDI.W #$00FF,D6 ; EXT D6 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
ADDA.L A0,A5
MOVE.B (A5,D7.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER
MOVE.W D4,CCR ; ANY MEMORY
ADDQ.B #1,D6
MOVE.W CCR,D4
MOVE.W (SP)+,D1 ; GET OLD FLAGS
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D1
OR.B D1,D4 ; SET X,C IF PREVIUOSLY SET
ANDI.W #$00FF,D6 ; EXT D7 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
ADDA.L A0,A5
MOVE.B (A5,D7.L),D6
MOVE.W D4,CCR
ADDQ.B #1,D6
MOVE.W CCR,D4
MOVE.B D6,(A5,D7.L)
ANDI.W #$00FF,D6 ; EXT D7 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
MOVE.W (SP)+,D1 ; GET OLD FLAGS
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D1
OR.B D1,D4 ; SET X,C IF PREVIUOSLY SET
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD35: ; DEC (IY+D)
MOVE.W D4,-(SP) ; SAVE X,C AS NOT AFFECTED
SUBA.L A0,A5
MOVE.L A5,D1 ; CONVENIENTLY MASK D1.L WITH 0000FFFF
MOVE.B (A2)+,D7
EXT.W D7
ADD.W D7,D1
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
ADDA.L A0,A5
MOVE.B (A5,D7.L),D6
MOVE.W D4,CCR
SUBQ.B #1,D6
MOVE.W CCR,D4
MOVE.W (SP)+,D1 ; GET OLD FLAGS
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D1
OR.B D1,D4 ; SET X,C IF PREVIUOSLY SET
MOVE.B D6,(A5,D7.L)
ANDI.W #$00FF,D6 ; EXT D6 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
ADDA.L A0,A5
MOVE.B (A5,D7.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER
MOVE.W D4,CCR ; ANY MEMORY
SUBQ.B #1,D6
MOVE.W CCR,D4
MOVE.W (SP)+,D1 ; GET OLD FLAGS
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D1
OR.B D1,D4 ; SET X,C IF PREVIUOSLY SET
ANDI.W #$00FF,D6 ; EXT D7 FOR INDEX INTO SUB TABLE
MOVE.B $220(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
ADDA.L A0,A5
MOVE.B (A5,D7.L),D6
MOVE.W D4,CCR
SUBQ.B #1,D6
MOVE.W CCR,D4
MOVE.B D6,(A5,D7.L)
ANDI.W #$00FF,D6 ; EXT D7 FOR INDEX INTO SUB TABLE
MOVE.B $220(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
MOVE.W (SP)+,D1 ; GET OLD FLAGS
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D1
OR.B D1,D4 ; SET X,C IF PREVIUOSLY SET
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD36: ; LD (IY+D),N
SUBA.L A0,A5
MOVE.L A5,D1 ; CONVENIENTLY MASK D1.L WITH 0000FFFF
MOVE.B (A2)+,D7
EXT.W D7
ADD.W D7,D1
CMPI.W #$4000,D1 ; if (IX+D) >= 4000 do the instruction
BCS.B .L1
MOVE.B (A2)+,D1
ADDA.L A0,A5
MOVE.B D1,(A5,D7.W)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if (IY+D) < 3C00 we are in ROM so do nothing
BHI.B .L2
ADDA.L A0,A5
ADDQ.L #1,A2 ; will catch (IY+d)>FFFF aswell
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B (A2)+,D6
ADDA.L A0,A5
MOVE.B D6,(A5,D7.W) ; (IY+D) is pointing at the screen so update the
BSR _screenwrite ; screen with N
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD39: ; ADD IY,SP
SUBA.L A0,A4
MOVE.L A4,D7
SUBA.L A0,A5
MOVE.L A5,D6
ADD.W D7,D6
SCS.B D7
ANDI.W #$EE,D4 ; CLEAR X,C
ANDI.W #$11,D7
OR.B D7,D4 ; SET X,C IF CARRY
MOVEQ #0,D5 ; SET H,N=0
ADDA.L A0,A4
MOVE.L D6,A5
ADDA.L A0,A5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD46: ; LD B,(IY+D)
MOVE.B (A2)+,D1
EXT.W D1
ROL.W #8,D3
MOVE.B (A5,D1.W),D3
ROL.W #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD4E: ; LD C,(IY+D)
MOVE.B (A2)+,D1
EXT.W D1
MOVE.B (A5,D1.W),D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD56: ; LD D,(IY+D)
MOVE.B (A2)+,D1
EXT.W D1
ROL.L #8,D3
MOVE.B (A5,D1.W),D3
ROR.L #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD5E: ; LD E,(IY+D)
MOVE.B (A2)+,D1
EXT.W D1
SWAP D3
MOVE.B (A5,D1.W),D0
SWAP D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD66: ; LD H,(IY+D)
MOVE.B (A2)+,D1
EXT.W D1
ROL.W #8,D2
MOVE.B (A5,D1.W),D2
ROL.W #8,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD6E: ; LD L,(IY+D)
MOVE.B (A2)+,D1
EXT.W D1
MOVE.B (A5,D1.W),D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD70: ; LD (IY+D),B
SUBA.L A0,A5
MOVE.L A5,D1
MOVE.B (A2)+,D7
EXT.W D7
ADD.W D7,D1
CMPI.W #$4000,D1
BCS.B .L1
ADDA.L A0,A5
ROL.W #8,D3
MOVE.B D3,(A5,D7.W)
ROL.W #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
ADDA.L A0,A5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.W D3,D6
ADDA.L A0,A5
ROL.W #8,D6
MOVE.B D6,(A5,D7.W)
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD71: ; LD (IY+D),C
SUBA.L A0,A5
MOVE.L A5,D1
MOVE.B (A2)+,D7
EXT.W D7
ADD.W D7,D1
CMPI.W #$4000,D1
BCS.B .L1
ADDA.L A0,A5
MOVE.B D3,(A5,D7.W)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
ADDA.L A0,A5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B D3,D6
ADDA.L A0,A5
MOVE.B D6,(A5,D7.W)
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD72: ; LD (IY+D),D
SUBA.L A0,A5
MOVE.L A5,D1
MOVE.B (A2)+,D7
EXT.W D7
ADD.W D7,D1
CMPI.W #$4000,D1
BCS.B .L1
ADDA.L A0,A5
ROL.L #8,D3
MOVE.B D3,(A5,D7.W)
ROR.L #8,D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
ADDA.L A0,A5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.L D3,D6
ADDA.L A0,A5
ROL.L #8,D6
MOVE.B D6,(A5,D7.W)
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD73: ; LD (IY+D),E
SUBA.L A0,A5
MOVE.L A5,D1
MOVE.B (A2)+,D7
EXT.W D7
ADD.W D7,D1
CMPI.W #$4000,D1
BCS.B .L1
ADDA.L A0,A5
SWAP D3
MOVE.B D3,(A5,D7.W)
SWAP D3
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
ADDA.L A0,A5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.L D3,D6
ADDA.L A0,A5
SWAP D6
MOVE.B D6,(A5,D7.W)
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD74: ; LD (IY+D),H
SUBA.L A0,A5
MOVE.L A5,D1
MOVE.B (A2)+,D7
EXT.W D7
ADD.W D7,D1
CMPI.W #$4000,D1
BCS.B .L1
ADDA.L A0,A5
ROL.W #8,D2
MOVE.B D2,(A5,D7.W)
ROL.W #8,D2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
ADDA.L A0,A5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.W D2,D6
ADDA.L A0,A5
ROL.W #8,D6
MOVE.B D6,(A5,D7.W)
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD75: ; LD (IY+D),L
SUBA.L A0,A5
MOVE.L A5,D1
MOVE.B (A2)+,D7
EXT.W D7
ADD.W D7,D1
CMPI.W #$4000,D1
BCS.B .L1
ADDA.L A0,A5
MOVE.B D2,(A5,D7.W)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
ADDA.L A0,A5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B D2,D6
ADDA.L A0,A5
MOVE.B D6,(A5,D7.W)
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD77: ; LD (IY+D),A
SUBA.L A0,A5
MOVE.L A5,D1
MOVE.B (A2)+,D7
EXT.W D7
ADD.W D7,D1
CMPI.W #$4000,D1
BCS.B .L1
ADDA.L A0,A5
MOVE.B D0,(A5,D7.W)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
ADDA.L A0,A5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B D0,D6
ADDA.L A0,A5
MOVE.B D6,(A5,D7.W)
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD7E: ; LD A,(IY+D)
MOVE.B (A2)+,D1
EXT.W D1
MOVE.B (A5,D1.W),D0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD86: ; ADD A,(IY+D)
MOVE.B (A2)+,D1
EXT.W D1
MOVE.W D4,CCR
ADD.B (A5,D1.W),D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD8E: ; ADC A,(IY+D)
MOVE.B (A2)+,D1
EXT.W D1
MOVE.B (A5,D1.W),D7
MOVE.W D4,CCR
ADDX.B D7,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO ADD TABLE
MOVE.B $220(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=0 H=HALF
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD96: ; SUB (IY+D)
MOVE.B (A2)+,D1
EXT.W D1
MOVE.W D4,CCR
SUB.B (A5,D1.W),D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFD9E: ; SBC A,(IY+D)
MOVE.B (A2)+,D1
EXT.W D1
MOVE.B (A5,D1.W),D7
MOVE.W D4,CCR
SUBX.B D7,D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D0.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFDA6: ; AND (IY+D)
MOVE.B (A2)+,D1
EXT.W D1
MOVE.W D4,CCR
AND.B (A5,D1.W),D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO PARITY TABLE
OR.B (A6,D0.W),D4 ; SET V FLG TO PARITY TABLE VALUE
ANDI.W #$EE,D4 ; CLEAR C AND X
MOVE.B #$10,D5 ; SET EXTENDED Z80 FLG TO N=0 H=1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFDAE: ; XOR (IY+D)
MOVE.B (A2)+,D1
EXT.W D1
MOVE.B (A5,D1.W),D7
MOVE.W D4,CCR
EOR.B D7,D0
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO PARITY TABLE
OR.B (A6,D0.W),D4 ; SET V FLG TO PARITY TABLE VALUE
ANDI.W #$EE,D4 ; CLEAR C AND X
MOVE.B #$10,D5 ; SET EXTENDED Z80 FLG TO N=0 H=1
MOVE.W CCR,D4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFDB6: ; OR (IY+D)
MOVE.B (A2)+,D1
EXT.W D1
MOVE.W D4,CCR
OR.B (A5,D1.W),D0
MOVE.W CCR,D4
ANDI.W #$00FF,D0 ; EXT D0 FOR INDEX INTO PARITY TABLE
OR.B (A6,D0.W),D4 ; SET V FLG TO PARITY TABLE VALUE
ANDI.W #$EE,D4 ; CLEAR C AND X
MOVE.B #$10,D5 ; SET EXTENDED Z80 FLG TO N=0 H=1
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFDBE: ; CP (IY+D)
MOVE.B D0,D6
MOVE.B (A2)+,D1
EXT.W D1
MOVE.W D4,CCR
SUB.B (A5,D1.W),D6
MOVE.W CCR,D4
ANDI.W #$00FF,D6 ; EXT D6 FOR INDEX INTO SUB TABLE
MOVE.B $320(A6,D6.W),D5; SET EXTENDED Z80 FLG TO N=1 H=HALF
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFDCB: ; various (IY+d) instructions FD CB d X
SUBA.L A0,A5 ; get real IY val
MOVE.L A5,D1
ADDA.L A0,A5
MOVE.B (A2)+,D7 ; get d offset
EXT.W D7 ; sign extend
ADD.W D7,D1 ; D1 now has (IY+d) for later use by screenwrite()
MOVE.B (A2)+,D7 ; get X to decide function to perform
CMPI.B #6,D7
BEQ.W FDRLC
CMPI.B #14,D7
BEQ.W FDRRC
CMPI.B #$16,D7
BEQ.W FDRL
CMPI.B #$1E,D7
BEQ.W FDRR
CMPI.B #$26,D7
BEQ.W FDSLA
CMPI.B #$2E,D7
BEQ.W FDSRA
CMPI.B #$3E,D7
BEQ.W FDSRL
CMPI.B #$46,D7
BEQ.W FDBT0
CMPI.B #$4E,D7
BEQ.W FDBT1
CMPI.B #$56,D7
BEQ.W FDBT2
CMPI.B #$5E,D7
BEQ.W FDBT3
CMPI.B #$66,D7
BEQ.W FDBT4
CMPI.B #$6E,D7
BEQ.W FDBT5
CMPI.B #$76,D7
BEQ.W FDBT6
CMPI.B #$7E,D7
BEQ.W FDBT7
CMPI.B #$86,D7
BEQ.W FDRS0
CMPI.B #$8E,D7
BEQ.W FDRS1
CMPI.B #$96,D7
BEQ.W FDRS2
CMPI.B #$9E,D7
BEQ.W FDRS3
CMPI.B #$A6,D7
BEQ.W FDRS4
CMPI.B #$AE,D7
BEQ.W FDRS5
CMPI.B #$B6,D7
BEQ.W FDRS6
CMPI.B #$BE,D7
BEQ.W FDRS7
CMPI.B #$C6,D7
BEQ.W FDST0
CMPI.B #$CE,D7
BEQ.W FDST1
CMPI.B #$D6,D7
BEQ.W FDST2
CMPI.B #$DE,D7
BEQ.W FDST3
CMPI.B #$E6,D7
BEQ.W FDST4
CMPI.B #$EE,D7
BEQ.W FDST5
CMPI.B #$F6,D7
BEQ.W FDST6
CMPI.B #$FE,D7
BEQ.W FDST7
BRA ILLEGAL ; ILLEGAL IF NO MATCH IN TABLE
FDRLC: ; RLC (IY+D)
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ROL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.B (A0,D1.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER (HL)
ROL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ROL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDRRC: ; RRC (IY+D)
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ROR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.B (A0,D1.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER (HL)
ROR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ROR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDRL: ; RL (IY+D)
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ROXL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.B (A0,D1.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER (HL)
ROXL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ROXL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDRR: ; RR (IY+D)
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ROXR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.B (A0,D1.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER (HL)
ROXR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ROXR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDSLA: ; SLA (IY+D)
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
LSL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.B (A0,D1.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER (HL)
LSL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
LSL.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDSRA: ; SRA (IY+D)
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ASR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.B (A0,D1.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER (HL)
ASR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
ASR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDSRL: ; SRL (IY+D)
CMPI.W #$4000,D1 ; if HL >= 4000 do the instruction
BCS.B .L1
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
LSR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1 ; if HL <= 3C00 we are in ROM so do nothing
BHI.B .L2
MOVE.B (A0,D1.L),D6 ; CONDITION THE FLAGS BUT DONT ALTER (HL)
LSR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
MOVE.B (A0,D1.L),D6
MOVE.W D4,CCR
LSR.B #1,D6
MOVE.W CCR,D4
SCS D7
ANDI.B #$01,D7
ROL.B #4,D7
OR.B D7,D4
ANDI.W #$00FF,D6
OR.B (A6,D6.W),D4
MOVEQ.B #0,D5
MOVE.B D6,(A0,D1.L)
BSR _screenwrite ; HL -> SCREENLOC D6=BYTE
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDBT0: MOVE.B (A0,D1.L),D7 ; BTST 0 IYD
MOVE.W D4,CCR
BTST #0,D7
MOVE.W CCR,D4
MOVEQ #$10,D5 ; SET H=1,N=0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDBT1: MOVE.B (A0,D1.L),D7
MOVE.W D4,CCR
BTST #1,D7
MOVE.W CCR,D4
MOVEQ #$10,D5 ; SET H=1,N=0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDBT2: MOVE.B (A0,D1.L),D7
MOVE.W D4,CCR
BTST #2,D7
MOVE.W CCR,D4
MOVEQ #$10,D5 ; SET H=1,N=0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDBT3: MOVE.B (A0,D1.L),D7
MOVE.W D4,CCR
BTST #3,D7
MOVE.W CCR,D4
MOVEQ #$10,D5 ; SET H=1,N=0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDBT4: MOVE.B (A0,D1.L),D7
MOVE.W D4,CCR
BTST #4,D7
MOVE.W CCR,D4
MOVEQ #$10,D5 ; SET H=1,N=0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDBT5: MOVE.B (A0,D1.L),D7
MOVE.W D4,CCR
BTST #5,D7
MOVE.W CCR,D4
MOVEQ #$10,D5 ; SET H=1,N=0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDBT6: MOVE.B (A0,D1.L),D7
MOVE.W D4,CCR
BTST #6,D7
MOVE.W CCR,D4
MOVEQ #$10,D5 ; SET H=1,N=0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDBT7: MOVE.B (A0,D1.L),D7
MOVE.W D4,CCR
BTST #7,D7
MOVE.W CCR,D4
MOVEQ #$10,D5 ; SET H=1,N=0
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDRS0: CMPI.W #$4000,D1 ; RES 0 IYD
BCS.B .L1
BCLR #0,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BCLR #0,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDRS1: CMPI.W #$4000,D1
BCS.B .L1
BCLR #1,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BCLR #1,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDRS2: CMPI.W #$4000,D1
BCS.B .L1
BCLR #2,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BCLR #2,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDRS3: CMPI.W #$4000,D1
BCS.B .L1
BCLR #3,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BCLR #3,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDRS4: CMPI.W #$4000,D1
BCS.B .L1
BCLR #4,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BCLR #4,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDRS5: CMPI.W #$4000,D1
BCS.B .L1
BCLR #5,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BCLR #5,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDRS6: CMPI.W #$4000,D1
BCS.B .L1
BCLR #6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BCLR #6,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDRS7: CMPI.W #$4000,D1
BCS.B .L1
BCLR #7,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BCLR #7,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDST0: CMPI.W #$4000,D1 ; SET 0 IYD (D1 HOLDS IY+D)
BCS.B .L1
BSET #0,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BSET #0,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDST1: CMPI.W #$4000,D1 ; SET 1 IYD
BCS.B .L1
BSET #1,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BSET #1,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDST2: CMPI.W #$4000,D1 ; SET 2 IYD
BCS.B .L1
BSET #2,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BSET #2,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDST3: CMPI.W #$4000,D1 ; SET 3 IYD
BCS.B .L1
BSET #3,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BSET #3,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDST4: CMPI.W #$4000,D1
BCS.B .L1
BSET #4,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BSET #4,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDST5: CMPI.W #$4000,D1
BCS.B .L1
BSET #5,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BSET #5,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDST6: CMPI.W #$4000,D1
BCS.B .L1
BSET #6,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BSET #6,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
FDST7: CMPI.W #$4000,D1
BCS.B .L1
BSET #7,(A0,D1.L)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L1
CMPI.W #$3BFF,D1
BHI.B .L2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
.L2
BSET #7,(A0,D1.L)
MOVE.B (A0,D1.L),D6
BSR _screenwrite
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFDE1: ; POP IY
MOVEQ #0,D7
MOVE.W (A4)+,D7
ROL.W #8,D7
MOVE.L D7,A5
ADDA.L A0,A5
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFDE3: ; EX (SP),IY
SUBA.L A0,A5
MOVE.L A5,D7
MOVE.W (A4),D6
ROL.W #8,D6
MOVE.W D6,A5
ADDA.L A0,A5
ROL.W #8,D7
MOVE.W D7,(A4)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFDE5: ; PUSH IY
MOVE.L A5,D6
SUB.L A0,D6
ROL.W #8,D6
MOVE.W D6,-(A4)
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFDE9: ; JP (IY)
MOVE.L A5,A2
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
MFDF9: ; LD SP,IY
MOVE.L A5,A4
MOVE.W (A2)+,D1
IF DEEBUG
BRA DEBUG
ELSE
JMP ([A3,D1.W*4])
ENDIF
SECTION Z80DATA,DATA
MNTBL:
DC.L MAIN80
DC.L MAIN81
DC.L MAIN82
DC.L MAIN83
DC.L MAIN84
DC.L MAIN85
DC.L MAIN86
DC.L MAIN87
DC.L MAIN88
DC.L MAIN89
DC.L MAIN8A
DC.L MAIN8B
DC.L MAIN8C
DC.L MAIN8D
DC.L MAIN8E
DC.L MAIN8F
DC.L MAIN90
DC.L MAIN91
DC.L MAIN92
DC.L MAIN93
DC.L MAIN94
DC.L MAIN95
DC.L MAIN96
DC.L MAIN97
DC.L MAIN98
DC.L MAIN99
DC.L MAIN9A
DC.L MAIN9B
DC.L MAIN9C
DC.L MAIN9D
DC.L MAIN9E
DC.L MAIN9F
DC.L MAINA0
DC.L MAINA1
DC.L MAINA2
DC.L MAINA3
DC.L MAINA4
DC.L MAINA5
DC.L MAINA6
DC.L MAINA7
DC.L MAINA8
DC.L MAINA9
DC.L MAINAA
DC.L MAINAB
DC.L MAINAC
DC.L MAINAD
DC.L MAINAE
DC.L MAINAF
DC.L MAINB0
DC.L MAINB1
DC.L MAINB2
DC.L MAINB3
DC.L MAINB4
DC.L MAINB5
DC.L MAINB6
DC.L MAINB7
DC.L MAINB8
DC.L MAINB9
DC.L MAINBA
DC.L MAINBB
DC.L MAINBC
DC.L MAINBD
DC.L MAINBE
DC.L MAINBF
DC.L MAINC0
DC.L MAINC1
DC.L MAINC2
DC.L MAINC3
DC.L MAINC4
DC.L MAINC5
DC.L MAINC6
DC.L MAINC7
DC.L MAINC8
DC.L MAINC9
DC.L MAINCA
DC.L ILLEGAL
DC.L MAINCC
DC.L MAINCD
DC.L MAINCE
DC.L MAINCF
DC.L MAIND0
DC.L MAIND1
DC.L MAIND2
DC.L MAIND3
DC.L MAIND4
DC.L MAIND5
DC.L MAIND6
DC.L MAIND7
DC.L MAIND8
DC.L MAIND9
DC.L MAINDA
DC.L MAINDB
DC.L MAINDC
DC.L ILLEGAL
DC.L MAINDE
DC.L MAINDF
DC.L MAINE0
DC.L MAINE1
DC.L MAINE2
DC.L MAINE3
DC.L MAINE4
DC.L MAINE5
DC.L MAINE6
DC.L MAINE7
DC.L MAINE8
DC.L MAINE9
DC.L MAINEA
DC.L MAINEB
DC.L MAINEC
DC.L ILLEGAL
DC.L MAINEE
DC.L MAINEF
DC.L MAINF0
DC.L MAINF1
DC.L MAINF2
DC.L MAINF3
DC.L MAINF4
DC.L MAINF5
DC.L MAINF6
DC.L MAINF7
DC.L MAINF8
DC.L MAINF9
DC.L MAINFA
DC.L MAINFB
DC.L MAINFC
DC.L ILLEGAL
DC.L MAINFE
DC.L MAINFF
DC.L MAIN00
DC.L MAIN01
DC.L MAIN02
DC.L MAIN03
DC.L MAIN04
DC.L MAIN05
DC.L MAIN06
DC.L MAIN07
DC.L MAIN08
DC.L MAIN09
DC.L MAIN0A
DC.L MAIN0B
DC.L MAIN0C
DC.L MAIN0D
DC.L MAIN0E
DC.L MAIN0F
DC.L MAIN10
DC.L MAIN11
DC.L MAIN12
DC.L MAIN13
DC.L MAIN14
DC.L MAIN15
DC.L MAIN16
DC.L MAIN17
DC.L MAIN18
DC.L MAIN19
DC.L MAIN1A
DC.L MAIN1B
DC.L MAIN1C
DC.L MAIN1D
DC.L MAIN1E
DC.L MAIN1F
DC.L MAIN20
DC.L MAIN21
DC.L MAIN22
DC.L MAIN23
DC.L MAIN24
DC.L MAIN25
DC.L MAIN26
DC.L MAIN27
DC.L MAIN28
DC.L MAIN29
DC.L MAIN2A
DC.L MAIN2B
DC.L MAIN2C
DC.L MAIN2D
DC.L MAIN2E
DC.L MAIN2F
DC.L MAIN30
DC.L MAIN31
DC.L MAIN32
DC.L MAIN33
DC.L MAIN34
DC.L MAIN35
DC.L MAIN36
DC.L MAIN37
DC.L MAIN38
DC.L MAIN39
DC.L MAIN3A
DC.L MAIN3B
DC.L MAIN3C
DC.L MAIN3D
DC.L MAIN3E
DC.L MAIN3F
DC.L MAIN40
DC.L MAIN41
DC.L MAIN42
DC.L MAIN43
DC.L MAIN44
DC.L MAIN45
DC.L MAIN46
DC.L MAIN47
DC.L MAIN48
DC.L MAIN49
DC.L MAIN4A
DC.L MAIN4B
DC.L MAIN4C
DC.L MAIN4D
DC.L MAIN4E
DC.L MAIN4F
DC.L MAIN50
DC.L MAIN51
DC.L MAIN52
DC.L MAIN53
DC.L MAIN54
DC.L MAIN55
DC.L MAIN56
DC.L MAIN57
DC.L MAIN58
DC.L MAIN59
DC.L MAIN5A
DC.L MAIN5B
DC.L MAIN5C
DC.L MAIN5D
DC.L MAIN5E
DC.L MAIN5F
DC.L MAIN60
DC.L MAIN61
DC.L MAIN62
DC.L MAIN63
DC.L MAIN64
DC.L MAIN65
DC.L MAIN66
DC.L MAIN67
DC.L MAIN68
DC.L MAIN69
DC.L MAIN6A
DC.L MAIN6B
DC.L MAIN6C
DC.L MAIN6D
DC.L MAIN6E
DC.L MAIN6F
DC.L MAIN70
DC.L MAIN71
DC.L MAIN72
DC.L MAIN73
DC.L MAIN74
DC.L MAIN75
DC.L MAIN76
DC.L MAIN77
DC.L MAIN78
DC.L MAIN79
DC.L MAIN7A
DC.L MAIN7B
DC.L MAIN7C
DC.L MAIN7D
DC.L MAIN7E
DC.L MAIN7F
CBTABLE:
DC.L MCB00
DC.L MCB01
DC.L MCB02
DC.L MCB03
DC.L MCB04
DC.L MCB05
DC.L MCB06
DC.L MCB07
DC.L MCB08
DC.L MCB09
DC.L MCB0A
DC.L MCB0B
DC.L MCB0C
DC.L MCB0D
DC.L MCB0E
DC.L MCB0F
DC.L MCB10
DC.L MCB11
DC.L MCB12
DC.L MCB13
DC.L MCB14
DC.L MCB15
DC.L MCB16
DC.L MCB17
DC.L MCB18
DC.L MCB19
DC.L MCB1A
DC.L MCB1B
DC.L MCB1C
DC.L MCB1D
DC.L MCB1E
DC.L MCB1F
DC.L MCB20
DC.L MCB21
DC.L MCB22
DC.L MCB23
DC.L MCB24
DC.L MCB25
DC.L MCB26
DC.L MCB27
DC.L MCB28
DC.L MCB29
DC.L MCB2A
DC.L MCB2B
DC.L MCB2C
DC.L MCB2D
DC.L MCB2E
DC.L MCB2F
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MCB38
DC.L MCB39
DC.L MCB3A
DC.L MCB3B
DC.L MCB3C
DC.L MCB3D
DC.L MCB3E
DC.L MCB3F
DC.L MCB40
DC.L MCB41
DC.L MCB42
DC.L MCB43
DC.L MCB44
DC.L MCB45
DC.L MCB46
DC.L MCB47
DC.L MCB48
DC.L MCB49
DC.L MCB4A
DC.L MCB4B
DC.L MCB4C
DC.L MCB4D
DC.L MCB4E
DC.L MCB4F
DC.L MCB50
DC.L MCB51
DC.L MCB52
DC.L MCB53
DC.L MCB54
DC.L MCB55
DC.L MCB56
DC.L MCB57
DC.L MCB58
DC.L MCB59
DC.L MCB5A
DC.L MCB5B
DC.L MCB5C
DC.L MCB5D
DC.L MCB5E
DC.L MCB5F
DC.L MCB60
DC.L MCB61
DC.L MCB62
DC.L MCB63
DC.L MCB64
DC.L MCB65
DC.L MCB66
DC.L MCB67
DC.L MCB68
DC.L MCB69
DC.L MCB6A
DC.L MCB6B
DC.L MCB6C
DC.L MCB6D
DC.L MCB6E
DC.L MCB6F
DC.L MCB70
DC.L MCB71
DC.L MCB72
DC.L MCB73
DC.L MCB74
DC.L MCB75
DC.L MCB76
DC.L MCB77
DC.L MCB78
DC.L MCB79
DC.L MCB7A
DC.L MCB7B
DC.L MCB7C
DC.L MCB7D
DC.L MCB7E
DC.L MCB7F
DC.L MCB80
DC.L MCB81
DC.L MCB82
DC.L MCB83
DC.L MCB84
DC.L MCB85
DC.L MCB86
DC.L MCB87
DC.L MCB88
DC.L MCB89
DC.L MCB8A
DC.L MCB8B
DC.L MCB8C
DC.L MCB8D
DC.L MCB8E
DC.L MCB8F
DC.L MCB90
DC.L MCB91
DC.L MCB92
DC.L MCB93
DC.L MCB94
DC.L MCB95
DC.L MCB96
DC.L MCB97
DC.L MCB98
DC.L MCB99
DC.L MCB9A
DC.L MCB9B
DC.L MCB9C
DC.L MCB9D
DC.L MCB9E
DC.L MCB9F
DC.L MCBA0
DC.L MCBA1
DC.L MCBA2
DC.L MCBA3
DC.L MCBA4
DC.L MCBA5
DC.L MCBA6
DC.L MCBA7
DC.L MCBA8
DC.L MCBA9
DC.L MCBAA
DC.L MCBAB
DC.L MCBAC
DC.L MCBAD
DC.L MCBAE
DC.L MCBAF
DC.L MCBB0
DC.L MCBB1
DC.L MCBB2
DC.L MCBB3
DC.L MCBB4
DC.L MCBB5
DC.L MCBB6
DC.L MCBB7
DC.L MCBB8
DC.L MCBB9
DC.L MCBBA
DC.L MCBBB
DC.L MCBBC
DC.L MCBBD
DC.L MCBBE
DC.L MCBBF
DC.L MCBC0
DC.L MCBC1
DC.L MCBC2
DC.L MCBC3
DC.L MCBC4
DC.L MCBC5
DC.L MCBC6
DC.L MCBC7
DC.L MCBC8
DC.L MCBC9
DC.L MCBCA
DC.L MCBCB
DC.L MCBCC
DC.L MCBCD
DC.L MCBCE
DC.L MCBCF
DC.L MCBD0
DC.L MCBD1
DC.L MCBD2
DC.L MCBD3
DC.L MCBD4
DC.L MCBD5
DC.L MCBD6
DC.L MCBD7
DC.L MCBD8
DC.L MCBD9
DC.L MCBDA
DC.L MCBDB
DC.L MCBDC
DC.L MCBDD
DC.L MCBDE
DC.L MCBDF
DC.L MCBE0
DC.L MCBE1
DC.L MCBE2
DC.L MCBE3
DC.L MCBE4
DC.L MCBE5
DC.L MCBE6
DC.L MCBE7
DC.L MCBE8
DC.L MCBE9
DC.L MCBEA
DC.L MCBEB
DC.L MCBEC
DC.L MCBED
DC.L MCBEE
DC.L MCBEF
DC.L MCBF0
DC.L MCBF1
DC.L MCBF2
DC.L MCBF3
DC.L MCBF4
DC.L MCBF5
DC.L MCBF6
DC.L MCBF7
DC.L MCBF8
DC.L MCBF9
DC.L MCBFA
DC.L MCBFB
DC.L MCBFC
DC.L MCBFD
DC.L MCBFE
DC.L MCBFF
DDTABLE:
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MDD09
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MDD19
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MDD21
DC.L MDD22
DC.L MDD23
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MDD29
DC.L MDD2A
DC.L MDD2B
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MDD34
DC.L MDD35
DC.L MDD36
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MDD39
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MDD46
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MDD4E
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MDD56
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MDD5E
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MDD66
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MDD6E
DC.L ILLEGAL
DC.L MDD70
DC.L MDD71
DC.L MDD72
DC.L MDD73
DC.L MDD74
DC.L MDD75
DC.L ILLEGAL
DC.L MDD77
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MDD7E
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MDD86
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MDD8E
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MDD96
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MDD9E
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MDDA6
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MDDAE
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MDDB6
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MDDBE
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MDDCB
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MDDE1
DC.L ILLEGAL
DC.L MDDE3
DC.L ILLEGAL
DC.L MDDE5
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MDDE9
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MDDF9
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
EDTABLE:
DC.L ILLEGAL ;POINT THESE AT CASS INSTRUCTIONS
DC.L MED01
DC.L MED02
DC.L MED03
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MED40
DC.L MED41
DC.L MED42
DC.L MED43
DC.L MED44
DC.L MED45
DC.L MED46
DC.L MED47
DC.L MED48
DC.L MED49
DC.L MED4A
DC.L MED4B
DC.L ILLEGAL
DC.L MED4D
DC.L ILLEGAL
DC.L MED4F
DC.L MED50
DC.L MED51
DC.L MED52
DC.L MED53
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MED56
DC.L MED57
DC.L MED58
DC.L MED59
DC.L MED5A
DC.L MED5B
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MED5E
DC.L MED5F
DC.L MED60
DC.L MED61
DC.L MED62
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MED67
DC.L MED68
DC.L MED69
DC.L MED6A
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MED6F
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MED72
DC.L MED73
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MED78
DC.L MED79
DC.L MED7A
DC.L MED7B
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MEDA0
DC.L MEDA1
DC.L MEDA2
DC.L MEDA3
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MEDA8
DC.L MEDA9
DC.L MEDAA
DC.L MEDAB
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MEDB0
DC.L MEDB1
DC.L MEDB2
DC.L MEDB3
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MEDB8
DC.L MEDB9
DC.L MEDBA
DC.L MEDBB
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
FDTABLE:
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MFD09
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MFD19
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MFD21
DC.L MFD22
DC.L MFD23
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MFD29
DC.L MFD2A
DC.L MFD2B
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MFD34
DC.L MFD35
DC.L MFD36
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MFD39
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MFD46
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MFD4E
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MFD56
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MFD5E
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MFD66
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MFD6E
DC.L ILLEGAL
DC.L MFD70
DC.L MFD71
DC.L MFD72
DC.L MFD73
DC.L MFD74
DC.L MFD75
DC.L ILLEGAL
DC.L MFD77
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MFD7E
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MFD86
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MFD8E
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MFD96
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MFD9E
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MFDA6
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MFDAE
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MFDB6
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MFDBE
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MFDCB
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MFDE1
DC.L ILLEGAL
DC.L MFDE3
DC.L ILLEGAL
DC.L MFDE5
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MFDE9
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L MFDF9
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
DC.L ILLEGAL
_JUMPTBL: DS.L 1
* for parity flag, 1 = even parity, 0 = odd parity. */
* static char parity_table[256] =
PARITY: DC.B 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 0, 2, 0, 0, 2
DC.B 0, 2, 2, 0, 2, 0, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0
DC.B 0, 2, 2, 0, 2, 0, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0
DC.B 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 0, 2, 0, 0, 2
DC.B 0, 2, 2, 0, 2, 0, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0
DC.B 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 0, 2, 0, 0, 2
DC.B 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 0, 2, 0, 0, 2
DC.B 0, 2, 2, 0, 2, 0, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0
DC.B 0, 2, 2, 0, 2, 0, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0
DC.B 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 0, 2, 0, 0, 2
DC.B 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 0, 2, 0, 0, 2
DC.B 0, 2, 2, 0, 2, 0, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0
DC.B 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 0, 2, 0, 0, 2
DC.B 0, 2, 2, 0, 2, 0, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0
DC.B 0, 2, 2, 0, 2, 0, 0, 2, 2, 0, 0, 2, 0, 2, 2, 0
DC.B 2, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 0, 2, 0, 0, 2
* Z-80 (0-FF) -> 680X0 FLAGS (0-1F) (PARITY+$100)
FALSF: DC.B 0,$11, 0,$11, 2,$13, 2,$13, 0,$11, 0,$11, 2,$13, 2,$13
DC.B 0,$11, 0,$11, 2,$13, 2,$13, 0,$11, 0,$11, 2,$13, 2,$13
DC.B 0,$11, 0,$11, 2,$13, 2,$13, 0,$11, 0,$11, 2,$13, 2,$13
DC.B 0,$11, 0,$11, 2,$13, 2,$13, 0,$11, 0,$11, 2,$13, 2,$13
DC.B 4,$15, 4,$15, 6,$17, 6,$17, 4,$15, 4,$15, 6,$17, 6,$17
DC.B 4,$15, 4,$15, 6,$17, 6,$17, 4,$15, 4,$15, 6,$17, 6,$17
DC.B 4,$15, 4,$15, 6,$17, 6,$17, 4,$15, 4,$15, 6,$17, 6,$17
DC.B 4,$15, 4,$15, 6,$17, 6,$17, 4,$15, 4,$15, 6,$17, 6,$17
DC.B 8,$19, 8,$19, $A,$1B, $A,$1B, 8,$19, 8,$19, $A,$1B, $A,$1B
DC.B 8,$19, 8,$19, $A,$1B, $A,$1B, 8,$19, 8,$19, $A,$1B, $A,$1B
DC.B 8,$19, 8,$19, $A,$1B, $A,$1B, 8,$19, 8,$19, $A,$1B, $A,$1B
DC.B 8,$19, 8,$19, $A,$1B, $A,$1B, 8,$19, 8,$19, $A,$1B, $A,$1B
DC.B $C,$1D, $C,$1D, $E,$1F, $E,$1F, $C,$1D, $C,$1D, $E,$1F, $E,$1F
DC.B $C,$1D, $C,$1D, $E,$1F, $E,$1F, $C,$1D, $C,$1D, $E,$1F, $E,$1F
DC.B $C,$1D, $C,$1D, $E,$1F, $E,$1F, $C,$1D, $C,$1D, $E,$1F, $E,$1F
DC.B $C,$1D, $C,$1D, $E,$1F, $E,$1F, $C,$1D, $C,$1D, $E,$1F, $E,$1F
* 680X0 FLAGS (0-$1F)-> Z-80 FLAG VALUES (PARITY+$200)
REALF: DC.B 0, 1, 4, 5,$40,$41,$44,$45,$80,$81,$84,$85,$C0,$C1,$C4,$C5
DC.B 0, 1, 4, 5,$40,$41,$44,$45,$80,$81,$84,$85,$C0,$C1,$C4,$C5
* ADD HALF CARRY FLAG BITS (INCLUDES ADD/SUB FLAG)(PARITY+$220)
ADDHALF:DC.B $10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
DC.B $10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
DC.B $10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
DC.B $10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
DC.B $10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
DC.B $10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
DC.B $10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
DC.B $10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
DC.B $10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
DC.B $10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
DC.B $10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
DC.B $10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
DC.B $10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
DC.B $10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
DC.B $10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
DC.B $10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
*SUB HALF CARRY FLAG BITS (INCLUDES ADD/SUB)(PARITY+$320)
SUBHALF:DC.B 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, $12
DC.B 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, $12
DC.B 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, $12
DC.B 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, $12
DC.B 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, $12
DC.B 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, $12
DC.B 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, $12
DC.B 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, $12
DC.B 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, $12
DC.B 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, $12
DC.B 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, $12
DC.B 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, $12
DC.B 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, $12
DC.B 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, $12
DC.B 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, $12
DC.B 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, $12
FLAGS: DS.W 1
XFLAGS: DS.W 1
AFLAGS: DS.W 1
XAFLAGS:DS.W 1
BC: DS.W 1
ABC: DS.W 1
DE: DS.W 1
ADE: DS.W 1
HL: DS.W 1
AHL: DS.W 1
REGA: DS.W 1
AREGA: DS.W 1